在休息框架中存在一些使用会话用户而不是self.get_object()
视图中的pk和@detail_route
的方法吗?
我想使用request.user
,不要在网址中发送pk。
或者可以使用另一个装饰器而不是@detail_route
...
答案 0 :(得分:1)
很难说你首先想要归档的是什么。也许在这种情况下使用单独的视图而不是视图集操作更容易?例如,这是一个视图片段,允许当前登录的用户管理他的帐户:
class CurrentUser(generics.RetrieveUpdateDestroyAPIView):
serializer_class = UserSerializer
def get_object(self):
return self.request.user
def perform_destroy(self, instance):
instance.is_active = False
instance.save()
将此项添加到模式中没有urlpatterns
的{{1}}:
pk
答案 1 :(得分:0)
在我的项目中,我使用的是简单的Django和Django-rest-framework,我正在使用request.user
,如下所示。
class ProfileRunCounts(generics.ListCreateAPIView):
def get(self, request, *args, **kwargs):
id = self.request.user
评论后更新。
HttpRequest.user
来自AuthenticationMiddleware:表示当前登录用户的AUTH_USER_MODEL实例。如果用户当前未登录,则将用户设置为AnonymousUser的实例。REST框架的Request类扩展了标准的HttpRequest,增加了对REST框架灵活的请求解析和请求身份验证的支持。
APIView类在以下方面与常规View类不同:
传递给处理程序方法的请求将是REST框架的Request实例,而不是Django的HttpRequest实例。
通过上述文档摘录,我相信用户对象始终可以在请求中使用。
有时它位于self.request.user
,有时位于request.user
。