在rest框架中存在一些使用会话用户的方法,而不是pk和self.get_object()
在@detail_route
视图?rest-framework @detail_route without pk
我想用request.user
并没有在网址发送PK。
或者可能使用另一种装饰,而不是@detail_route
...
在rest框架中存在一些使用会话用户的方法,而不是pk和self.get_object()
在@detail_route
视图?rest-framework @detail_route without pk
我想用request.user
并没有在网址发送PK。
或者可能使用另一种装饰,而不是@detail_route
...
在我的项目,我使用这两个普通的Django Django的和静止的框架,我下面用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类在以下方面是从普通视图类不同:
请求传递给处理方法将是REST框架的要求的情况下,不Django的HttpRequest的实例。
通过上述文档摘录,我相信用户对象始终可以在请求中使用。 有时它是在self.request.user
,有时是request.user
。
这些用于读写端点来表示模型实例的集合,所以仍然是相同的hacky感觉。 http://www.django-rest-framework.org/api-guide/generic-views/#listcreateapiview –
这将是更合适的使用api_view –
这很难说,你想在第一时间存档什么。也许这更容易使用单独的视图,而不是这种情况下的视图集操作?例如,下面是目前唯一让登录的用户视图段管理他的账户:
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
不pk
在模式地址:
url(r'^users/me/$', CurrentUser.as_view()),
所以,它说什么“我”它可能是你想写的任何东西有?,似乎合法! 我不会允许用户删除自己的帐户,尽管 –
@LuisSieira是的,任何你想要的网址。由于不需要捕获组,因此不需要。它不会*删除*它只是按照Django的建议将is_active设置为False。显然,你可以随意删除或更改这个逻辑,这只是一个例子。 – Igonato
@LuisSieira我的回答有什么问题?这个答案也使用'self.request。用户' –
使用@list_route代替。详细路线需要定义pk(按其余部分) – dkarchmer
您是否可以扩展一些关于您的用例的知识,也许可以使用一些代码。 –