【问题标题】:Add extra fields to User Profile view in Django REST Framework在 Django REST Framework 中向用户配置文件视图添加额外的字段
【发布时间】:2019-07-07 13:32:27
【问题描述】:

我正在使用 Django 2.xDjango REST FrameworkDjango REST Auth

默认情况下,Django REST Auth 为 Profile Details 提供一个端点,该端点从 User 模型返回经过身份验证的用户的详细信息。

默认视图提供字段

fields = ('pk', 'username', 'email', 'first_name', 'last_name')

端点是/api/user/

我想在序列化程序中添加更多字段,因为我正在使用自定义用户模型并添加了更多字段。

我是否需要创建自定义视图并重新定义序列化程序类,或者我可以扩展默认提供的视图和序列化程序以添加额外的字段?

【问题讨论】:

  • “默认视图”是什么意思? DRF 提供的哪个视图类可以做到这一点?如果您有自定义 User 模型,则应使用 django.contrib.auth.get_user_model() 获取 User 模型(这是您的自定义模型),然后您的视图可以访问您的所有 User 模型字段。
  • 它的 UserDetailsView 来自 rest_auth/views。用正确的引用更新了问题。
  • 这不是 DRF 的一部分。您显然正在使用 django-rest-auth,它是 DRF 之上的一个附加包。
  • 我确定 rest-auth 是一个优秀的 Django 公民,并且使用 get_user_model() 而不是 django.contrib.auth.models.User,因此视图显示您的自定义 User 模型。只需将其子类化以添加您自己的serializer_class 与您想要的字段。检查 rest_auth 源代码。

标签: django django-rest-framework django-rest-auth


【解决方案1】:

如果您检查docs,您将设置自定义序列化程序的配置选项。您可以通过在 django 设置中添加 REST_AUTH_SERIALIZERS 字典来为每个端点定义自定义 serializers 而无需覆盖 urlsviews

例子:

REST_AUTH_SERIALIZERS = {
    'USER_DETAILS_SERIALIZER': 'path.to.custom.serializer' 
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-26
    相关资源
    最近更新 更多