【问题标题】:Should I use abstractbaseuser or abstractuser?我应该使用 abstractbaseuser 还是 abstractuser?
【发布时间】:2021-07-18 02:55:02
【问题描述】:

我的要求是创建 AUTH 系统,它使用电子邮件作为 AUTH 令牌和一些额外的字段,如姓名、电话等,并去掉用户名字段:

我可以使用两个抽象类来实现这一点!但是对使用哪个感到困惑

I can just use AbstractUser and make "username=None" and then add usernanager ! 
Or should i use AbstractBaseUser and redo everything ?

【问题讨论】:

    标签: python django


    【解决方案1】:

    This 回答更好地解释了使用哪一个。但是,这取决于很多事情。简而言之:

    Django 默认使用用户名字段进行身份验证。如果你 想要使用电子邮件地址作为您的身份验证,而不是 用户名,那么最好扩展 AbstractBaseUser。但是,如果你 对 django 处理身份验证的方式感到满意,但需要一些额外的 用户模型的信息,然后你可以扩展 AbstractUser。

    您也可以查看文档Using a custom user model when starting a project

    【讨论】:

      【解决方案2】:

      根据[Django Docs]

      如果您对 Django 的 User 模型非常满意,但您想添加一些额外的配置文件信息,您可以继承 django.contrib.auth.models.AbstractUser 并添加您的自定义配置文件字段,尽管我们建议使用单独的模型,如“模型设计注意事项”指定自定义用户模型的说明。 AbstractUser 提供默认用户的完整实现作为抽象模型。

      所以我认为你对AbstractUser 不满意,你想要一些不同的东西。所以只需使用AbstractBaseUser 并根据需要扩展它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-05
        • 1970-01-01
        • 2015-10-16
        • 2023-03-06
        • 2013-02-20
        • 2011-07-31
        相关资源
        最近更新 更多