2

PythonとDjangoから始めて、tastypieを使用してRESTfulAPIを作成しています。

認証されたユーザーに基づいてリソースのフィールドを計算する必要があります。リソースのdehydrate_fieldメソッドをオーバーライドする予定ですが、dehydrate_fieldメソッド内で認証されたユーザーを取得する方法がわかりません。

tastypieのApiKeyAuthenticationを使用しており、現在URLのクエリ文字列で認証パラメーターを渡していますが、Authenticationヘッダーでも認証パラメーターを渡せるようにしたいと思います。

クエリ文字列またはAuthorizationヘッダーから自分でユーザー名を取得し、それを使用してユーザーを見つけることができるはずですが、すでにどこかでtastypieに実装する必要があるように感じますが、ドキュメント。

サンプルコードは次のとおりです。

class MyModelResource(ModelResource):

    calculated_field = fields.BooleanField(readonly=True)

    class Meta:
        queryset = MyModel.objects.all()
        resource_name = 'mymodel'
        authentication = ApiKeyAuthentication()     

    def dehydrate_calculated_field(self, bundle):
        user = <get authenticated user somehow>
        return <some boolean that's calculated depending on authenticated user>

tastypieに、認証されたユーザーを取得するための組み込み機能があるかどうか、またはクエリ文字列パラメーターまたはヘッダーフィールドに基づいて自分自身をロールする適切な方法があるかどうかを知りたいです。

4

3 に答える 3

4

私がやっている現在のユーザーを取得するために、質問への答えを見つけました

user = bundle.request.user

私を正しい方向に向けてくれたAidan Ewenに感謝します。

于 2013-01-20T16:11:28.377 に答える
0

私は Tastypie にあまり詳しくありませんが、Tastypie Resource はdjango クラス ベースのビューだと思います。その場合、ユーザーを取得できるはずです

user = self.request.user

于 2013-01-20T15:46:14.647 に答える
0

クエリセットに対してリクエストごとの変更を使用します

class CurrentUserResource(ModelResource):
    class Meta:
        queryset = User.objects.all()
        resource_name = 'current-user'

    def get_object_list(self, request):
        users = super(CurrentUserResource, self).get_object_list(request)
        return users.filter(id=request.user.id)
于 2016-03-07T21:14:07.737 に答える