没有pk

时间:2016-05-31 00:53:14

标签: python django django-rest-framework

在休息框架中存在一些使用会话用户而不是self.get_object()视图中的pk和@detail_route的方法吗?

我想使用request.user,不要在网址中发送pk。

或者可以使用另一个装饰器而不是@detail_route ...

2 个答案:

答案 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