私のDjangoアプリケーションで認証されたユーザーの詳細を取得しようとしています。そのためにapply_authorization_limitsが呼び出されていません
私は、新しいリソースを作成:
class MyUserResource(ModelResource):
class Meta:
queryset = ReaderUser.objects.all()
resource_name = 'me'
list_allowed_methods = []
detail_allowed_methods = ['get']
authorization = Authorization()
authentication = SessionAuthentication()
excludes = ('password', 'id', 'is_active', 'is_admin', 'last_login')
def apply_authorization_limits(self, request, object_list):
print request.user
return object_list.filter(pk=request.user.pk)
def prepend_urls(self):
return [
url(r"^(?P<resource_name>%s)/$" % self._meta.resource_name, self.wrap_view('dispatch_detail'), name="api_dispatch_detail"),
]
を私は/api/me/?format=json
を使用して、私のAPIを呼び出すと、私は次しまっ:More than one resource is found at this URI.
私もprepend_urlsずに試してみました。 は、私が理解していないことprint
文はメソッドapply_authorization_limits
私が間違っているのかについての任意のヒントに実行されることはありませんということですか?
、私はむしろ、一緒に行きたい: 'デフGET_OBJECT(自己、リクエスト): リターンスーパー(YourResource、自己).get_object(PK =からrequest.user。pub) ' このようにして、リストの代わりに1つのオブジェクト(1つのオブジェクトが常に含まれます)を取得し、http:// blabla/me/12を要求するRESTアーキテクチャを尊重します。ここで、12は現在のユーザーです。 http:// blabla/me/13(そしてあなたが12人)をリクエストすると、404 HTTPコードが返されます。 –
@ DavidW.Thanksあなたの助言に感謝します。あなたが正しいです、私はこれに戻り、あなたの解決策が理にかなっているかどうかを見てください。 –
@DavidD。 read_list操作は、リソースのリストを返すときに使用されます。個々のitensをフィルタリングするには、read_detailを使用して、許可されていないリソースに404の代わりにUnauthorizedを返すことができます。 –