0
我有一個Django模型,Note
,它有一個基於類的視圖。它應該在適當的查詢上返回一個JSON對象。Django REST:在呈現之前檢查JSON對象時ContentNotRenderedError
但是,在返回對象之前,我想檢查註釋對象中的user
字段是否與當前登錄的用戶匹配(用戶不應該能夠訪問不屬於他們自己的Note對象)。這一點,我試圖重寫get()
方法,呼籲self.retrieve()
返回之前檢查對象:
class NoteDetail(generics.RetrieveUpdateDestroyAPIView):
model = Note
serializer_class = NoteSerializer
permission_classes = (permissions.IsAuthenticated,)
renderer_classes = (JSONRenderer,)
def get(self, request, *args, **kwargs):
current_user = User.objects.get(pk=self.request.user.id)
note = self.retrieve(request, *args, **kwargs)
if note.author is current_user:
return note
else:
raise PermissionDenied('Note does not belong to authenticated user.')(author=current_user)
然而,這會返回一個ContentNotRenderedError
運行時:響應的內容必須呈現可以訪問之前。
有沒有辦法讓我在返回之前檢查對象?我必須找到解決方法嗎?
看看「自定義權限」在這裏:http://www.django-rest-framework.org/api-guide/permissions –
我想你是講Django的休息框架的...如果是,將其添加到標籤。 –
是的,謝謝!我一直在查看自定義權限,但不知道這是否是最好的方式,因爲所需的只是簡單的身份檢查。 –