如何从 djoser 端点(.../users/me)检索用户数据

Posted

技术标签:

【中文标题】如何从 djoser 端点(.../users/me)检索用户数据【英文标题】:How to retrieve user data from djoser endpoint (.../users/me) 【发布时间】:2021-12-26 08:29:13 【问题描述】:

如何使用 djoser url /users/me/ 检索用户信息?我尝试按照本文档中的示例进行操作,但没有任何结果,我不断收到 403 禁止。我在授权标头中使用了Bearer, JWT, and Token,但它们都不起作用。 https://djoser.readthedocs.io/en/latest/base_endpoints.html

SETTINGS.PY

DJOSER = 
    'LOGIN_FIELD': 'email',
    'USER_CREATE_PASSWORD_RETYPE': True,
    'USERNAME_CHANGED_EMAIL_CONFIRMATION': True,
    'PASSWORD_CHANGED_EMAIL_CONFIRMATION': True,
    'SEND_CONFIRMATION_EMAIL': True,
    'SET_USERNAME_RETYPE': True,
    'SET_PASSWORD_RETYPE': True,
    'PASSWORD_RESET_CONFIRM_URL': 'password/reset/confirm/uid/token',
    'USERNAME_RESET_CONFIRM_URL': 'email/reset/confirm/uid/token',
    'ACTIVATION_URL': 'activate/uid/token',
    'SEND_ACTIVATION_EMAIL': True,
    'SERIALIZERS': 
        'user_create': 'accounts.serializers.UserCreateSerializer',
        'user': 'accounts.serializers.UserCreateSerializer',
        'current_user': 'accounts.serializers.UserCreateSerializer',
        'user_delete': 'djoser.serializers.UserDeleteSerializer',
    

【问题讨论】:

添加您的REST_FRAMEWORK 设置 @shafik,请检查,我在 settings.py 中添加了 djoser 设置 你加了REST_FRAMEWORK = 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework.authentication.TokenAuthentication', (...) ), 是的,我在设置中添加了身份验证类 你的问题解决了吗? 【参考方案1】:

通过从 djoser UserSerializer 继承为用户创建新的 UserSerializer 类 并添加设置 'SERIALIZERS': 'user': 'accounts.serializers.UserSerializer', 'current_user': 'accounts.serializers.UserSerializer'

【讨论】:

以上是关于如何从 djoser 端点(.../users/me)检索用户数据的主要内容,如果未能解决你的问题,请参考以下文章

Djoser - 覆盖注册

自定义 djoser 创建用户端点

如何在 Djoser 中禁用用户名更改?

使用 djoser 实现密码重置

在 Djoser 和 Rest Framework 中使用自定义字段注册用户

/auth/jwt/refresh decode() 的 TypeError 使用 Djoser 获得了意外的关键字参数“验证”