python - 使用 Django Rest Framework 返回当前用户

标签 python django api django-rest-framework

我目前正在使用 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/

相关文章:

python - 将字符串时间戳转换为 Python 日期时间(原为 : how to properly convert char into float or double in Python)

python - pandas 时间戳到 posix 转换的奇怪行为

javascript - 用户对 Sentry 报告对话框未提交的反馈

python - 如何使用 Black 格式化程序自动中断 Python 代码中的长字符串常量?

python - 读取带有重音元音的文件时出错

python - 删除 Elastic beanstalk EC2 实例时,celery 任务和队列是否会中断?

python - Apache 说打开文件读取 : Permission Denied 时出错

api - 来自 Hetzner 网络的 Instagram API 500 服务器错误

javascript - Swagger:第一个枚举值覆盖类型

api - WSO2 - 身份服务器和 API 管理器协同工作