我目前正在使用 Django 开发 API。
但是,我想创建一个 View ,该 View 返回具有以下端点的当前用户:/users/current/
。
为此,我创建了一个 ListView 并过滤了发出请求的用户的查询集。这行得通,但结果是一个列表,而不是单个对象。结合分页,与其他端点相比,结果看起来过于复杂和不一致。
我还尝试创建详细 View 并过滤查询集,但 DRF 提示我没有提供 pk 或 slug。
最佳答案
有了这样的东西,你可能最好打破通用 View 并自己编写 View 。
@api_view(['GET'])
def current_user(request):
serializer = UserSerializer(request.user)
return Response(serializer.data)
你也可以像这样使用基于类的 View 来做同样的事情......
class CurrentUserView(APIView):
def get(self, request):
serializer = UserSerializer(request.user)
return Response(serializer.data)
当然,你也不需要使用序列化器,你同样可以从用户实例中提取你需要的字段。
@api_view(['GET'])
def current_user(request):
user = request.user
return Response({
'username': user.username,
'email': user.email,
...
})
希望对您有所帮助。
关于python - 使用 Django Rest Framework 返回当前用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15770488/