我试图通过用@list_route 标记来添加一个新端点,但是当我尝试导入时:
from rest_framework.decorators import list_route
Run Code Online (Sandbox Code Playgroud)
它找不到它。我是否需要安装一些东西才能工作(我是 django 的新手)?
我正在尝试创建只有员工的Django Rest Framework ModelViewSets.当我尝试使用标准的Django装饰器时,@staff_member_required我得到的错误让我相信装饰器不能与Django Rest Framework一起使用.
所以我正在尝试编写自己的ModelViewSet mixin.它主要按我的意思工作,除了我无法工作的更新方法.
所以,有两个问题:是否有更优雅的方法来实现这一点,如果没有,我的更新方法有什么问题?我找不到任何关于更新的文档,所以我正在使用我最好的猜测如何超级它,但它不起作用.
谢谢!
约翰
这是我的班级:
class StaffOnlyModelViewSet(viewsets.ModelViewSet):
def list(self, request):
if self.request.user.is_staff:
return super(StaffOnlyModelViewSet, self).list(request)
else:
content = {'Unauthorised': 'This API is private'}
return Response(content, status=status.HTTP_401_UNAUTHORIZED)
def retrieve(self, request, pk=None):
if self.request.user.is_staff:
return super(StaffOnlyModelViewSet, self).retrieve(request, pk=None)
else:
content = {'Unauthorised': 'This API is private'}
return Response(content, status=status.HTTP_401_UNAUTHORIZED)
def create(self, request):
if self.request.user.is_staff:
return super(StaffOnlyModelViewSet, self).create(request)
else:
content = {'Unauthorised': 'This API is private'}
return Response(content, status=status.HTTP_401_UNAUTHORIZED)
def update(self, request, pk=None):
if …Run Code Online (Sandbox Code Playgroud)