0

我想创建一个返回JSONResponse当前登录用户的 GET 端点。理想情况下,它看起来像:

{
    "username": "joe",
    "email": "joe@plainviewhcp.com",
    "first_name": "",
    "last_name": "",
    "last_login": "2021-09-17T17:11:00.039Z",
    "is_superuser": true,
    "is_active": true
}

(请注意,我使用的是 Django 3.2,而不是 Django REST API)

这需要序列化当前的用户对象,但是序列化单个对象是......在文档中是不透明的,许多类似的问题都有 6 年或更长时间/两个主要版本之前的响应。

4

1 回答 1

0

我通过从request.user对象中重新查询用户并挑选出第一个字段来解决了这个问题。这具有控制字段的额外好处。请注意,我已经进行了测试以确保用户此时已登录。

def api_current_user(request: HttpRequest):
    user = (
        User.objects.filter(pk=request.user.pk)
        .values(
            "username",
            "email",
            "first_name",
            "last_name",
            "last_login",
            "is_superuser",
            "is_active",
        )
        .first()
    )
    return JsonResponse(user)
于 2021-09-17T18:40:18.947 回答