首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Django用户模型,我应该使用哪一个,AbstractBaseUser还是AbstractUser模型?

对于Django用户模型,您可以根据具体需求选择使用AbstractBaseUser模型或AbstractUser模型。

  1. AbstractBaseUser模型:
    • 概念:AbstractBaseUser是Django提供的抽象用户模型,用于自定义用户模型,提供了一些必要的字段和方法,但不包含额外的用户信息字段。
    • 分类:属于Django自带的用户模型,需要自己定义额外的用户信息字段。
    • 优势:提供了灵活性,可以完全按照需求自定义用户模型,并且适用于不需要默认提供的用户信息字段的情况。
    • 应用场景:适用于需要自定义用户模型,并且不需要默认的用户信息字段,例如只需用户名和密码的简单认证系统。
    • 腾讯云相关产品:腾讯云云服务器(https://cloud.tencent.com/product/cvm)、腾讯云云数据库 MySQL 版(https://cloud.tencent.com/product/cdb_mysql)、腾讯云COS对象存储(https://cloud.tencent.com/product/cos)。
  • AbstractUser模型:
    • 概念:AbstractUser是在AbstractBaseUser的基础上扩展而来的用户模型,包含了常用的用户信息字段,如用户名、密码、电子邮件等。
    • 分类:属于Django自带的用户模型,已包含常用的用户信息字段。
    • 优势:提供了更多默认的用户信息字段,如电子邮件、姓名等,可以节省自定义用户信息字段的工作量。
    • 应用场景:适用于需要使用默认提供的用户信息字段,如电子邮件、姓名等的应用,例如多用户角色的系统或需要更丰富用户信息的社交平台。
    • 腾讯云相关产品:腾讯云COS对象存储(https://cloud.tencent.com/product/cos)、腾讯云云数据库 MySQL 版(https://cloud.tencent.com/product/cdb_mysql)。

需要注意的是,无论选择使用哪种模型,都需要根据具体需求来进行判断和定制化开发,以满足项目的要求。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Django 继承AbstractUser扩展用户模型

Django 继承AbstractUser扩展用户模型 by:授客 QQ:1033553122 测试环境 Win 10 Python 3.5.4 Django-2.0.13.tar.gz 官方下载地址...User Model,用于记录用户用户名,密码,邮箱,姓,名等个人信息,这些信息可能无法满足实际需求,这种情况下,需要拓展用户模型,如果项目还没有使用 Django 内置 User 模型,可以采用继承...AbstractUser 的拓展方式进行拓展(如果已经使用Django的内置模型Django会为其生成相关数据库迁移文件和数据库表,采用继承方式拓展会比较麻烦。)...用户认证系统使用我们自定义的用户模型,必须在项目settings.py 里通过 AUTH_USER_MODEL 指定自定义用户模型,如下带背景色部分的内容 ...略 TEMPLATE_DIRS = (...mysite python manage.py migrate 成功后,Django便会使用我们自定义的用户模型作为默认的用户模型了 注意:一定要在配置好 AUTH_USER_MODEL 变量后再迁移数据库

1.6K20

第一季 | 自定义用户模型,需要注意哪些坑位

现在大部分web项目基本都会有第三方授权登录,那 django 实现这一需求,应该有很多包可以用,比如 social-auth-app-django,在使用这样的工具时,用户模型要不要做相应的改动?...django 提供用户认证模块 AbstractUserAbstractBaseUser,而 AbstractUser 继承了 AbstractBaseUserAbstractUser 是一个完整的用户模型...再来看下第一季都有哪些可以回顾和用得上的小技能 本次创建的 django 项目,新建的用户模型继承 AbstractUser ,它是高度集成的类,里面定义的字段,不会完全显示,在迁移数据库时,就会创建。...使用 AbstractBaseUser 继承类来自定义一些字段,在 django 自带的 auth 认证的所有用法中统统不能使用,需要动手实现加密、登录判断、存储等一系列方法。...,可以使用 django.contrib.auth.get_user_model() 来引用用户模型

77310
  • 自定义Django认证系统的技术方案

    扩展User模型 代理模型 如果不需要修改表结构,只扩展行为,那么可以使用代理模型。...Django除了User模型,还有2个抽象模型AbstractUserAbstractBaseUser,从源码中可以看到它们的继承关系: class User(AbstractUser):...MyUser(AbstractUser): pass 第二步,settings.py中配置AUTH_USER_MODEL,指定新的用户模型: AUTH_USER_MODEL = 'myapp.MyUser...继承AbstractBaseUser 继承AbstractUser只能做扩展,如果我们想完全自定义用户模型,那么就需要继承AbstractBaseUser,再重写属性和方法。...写了这2篇关于Django认证系统的文章,明白了以前似懂非懂的技术细节。如果平时有需求想自己做个小网站,完全可以用Django来快速实现后端,开箱即用还是有点香。

    1.2K10

    自定义 Django的User Model,扩展 AbstractUser类注意事项

    应该使用django.contrib.auth.get_user_model()来引用用户模型————指定的自定义用户模型或者User from django.contrib.auth import...get_user_model   User = get_user_model() 当你定义一个外键或者到用户模型的多对多关系是,你应该使用AUTH_USER_MODEL设置来指定自定义的模型。...= models.ForeignKey(settings.AUTH_USER_MODEL) 一般来说,在导入时候执行的代码中,你应该使用 AUTH_USER_MODEL 设置引用用户模型。...Works with 任何AbstractBaseUser子类 6.自定义用户django.contrib.admin 如果你想让你自定义的User模型也可以在站点管理上工作,那么你的模型应该再定义一些额外的属性和方法...然而,你也需要覆写一些django.contrib.auth.models.AbstractUser 字段的定义不在你自定义用户模型中的。

    6.1K20

    拓展 User 模型

    用户可能还包含有昵称、头像、个性签名等等其它属性,因此仅仅使用 Django 内置的 User 模型是不够。...此外,AbstractUser 类又继承自 AbstractBaseUser,前者在后者的基础上拓展了一套用户权限(Permission)系统。...为了让 Django 用户认证系统使用我们自定义的用户模型,必须在 settings.py 里通过 AUTH_USER_MODEL 指定自定义用户模型所在的位置,即需要如下设置: django_auth_example...使用 Profile 模式拓展用户模型 如果想为一个已使用Django 内置 User 模型的项目拓展用户模型,上述继承 AbstractUser 的拓展方式会变得有点麻烦。...因此对于新项目来说,优先推荐使用继承 AbstractUser 的方式来拓展用户模型

    1.6K50

    django 关于User模型

    扩展用户模型Django内置的User模型虽然已经足够强大了。但是有时候还是不能满足我们的需求。比如在验证用户登录的时候,他用的是用户名作为验证,而我们有时候需要通过手机号码或者邮箱来进行验证。...继承自AbstractBaseUser模型: 如果你想修改默认的验证方式,并且对于原来User模型上的一些字段不想要,那么可以自定义一个模型,然后继承自AbstractBaseUser,再添加你想要的字段...这种方式会比较麻烦,最好是确定自己对Django比较了解才推荐使用。步骤如下: 创建模型。...但是因为我们重写了User,所以应该尽可能的模拟User模型: USERNAME_FIELD:用来描述User模型名字字段的字符串,作为唯一的标识。...但是为了更好的使用性,建议还是将User抽象出来,使用settings.AUTH_USER_MODEL来表示。

    1.1K30

    15.Django基础十一之认证系统

    关于User表的扩展阅读内容(目前作为了解) Django内置的User模型虽然已经足够强大了。但是有时候还是不能满足我们的需求。...继承自AbstractBaseUser模型: 作用: 给模型增加或减少字段, 修改户验证方法: authenticate 坏处: 破坏了原来的User模型的表结构 注意: 继承自AbstractBaseUser...但是因为我们重写了User,所以应该尽可能的模拟User模型: USERNAME_FIELD:用来描述User模型名字字段的字符串,作为唯一的标识。...但是为了更好的使用性,建议还是将User抽象出来,使用settings.AUTH_USER_MODEL来表示。...,并且django会自动将password进行加密   按上面的方式扩展了内置的auth_user表之后,一定要在settings.py中告诉Django现在使用新定义的UserInfo表来做用户认证

    2.1K20

    django 自带 user 字段扩展及头像上传

    django入门:环境及项目搭建》 《django入门:数据模型》 《django入门:视图及模版》 《django入门:Admin管理系统及表单》 《django入门:通用视图类重构视图》 《用django...,再考虑到 django 的通过外键生成反向字段也需要做些处理,如果说我们只需要额外添加一个字段,需要做那么多工作,是拒绝的。...通过 AbstractBaseUser 替换 User 这种方法会比较麻烦,说实话前两种方法已经可以解决我们的问题,不到迫不得已个人觉得没必要用这种方法 # AbstractUser 就是通过继承 AbstractBaseUser...至于如何设计每个人都不同,的思路是每个用户的头像都保存到各自以用户名为名的文件夹下,为了防止前一张头像被覆盖,所以用时间戳作为图像名,然后加上客户端回传的后缀名就可以生成我们的图片文件了。...请求信息 内容不多,但是一定要细心注意文件夹的名称,一定要细心注意文件夹的名称,一定要细心注意文件夹的名称,重要的事说三遍,反正在文件名上卡了好久,最后发现少加了一层,还是不够仔细啊。

    2.1K30

    基于django的视频点播网站开发-step3-注册登录功能

    用户注册登录是一个网站的基本功能,django对这部分进行了很好的封装,我们只需要在django的基础上做些简单的修改就可以达到我们想要的效果。...在django中,只需要下面一条命令,即可建立users应用 python3 manage.py startapp users 建表 我们需要一个用户表,用来实现登录注册功能,虽然django已经自带来用户登录注册功能...实现自定义User模型最简单的方式就是继承AbstractBaseUserAbstractBaseUser实现了User的核心功能,我们只需加一些额外的字段进行补充即可。...import AbstractUser from django.db import models class User(AbstractUser): GENDER_CHOICES = (...而且django是自带验证的,只需要我们配置好error_messages字典,当form验证的时候,就会显示我们自定义的错误信息。 有了注册表单后,就可以在前端模板和视图函数中使用它。

    1.4K30

    Django User 模块之 AbstractUser 扩展详解

    最近在写博客,刚好写到用户注册注销模块,觉得这一方面还是挺有趣的。当尝试掀开 Django 的源代码时一切 API 就不会变得那么摸不着。...如果只满足于用户注册时只登记其邮箱或是用户名,Django 自带的 User 模块既可以实现。但实际上,一个普遍的要求是注册用户应该能够修改自己的头像信息,邮箱信息,昵称信息等其他更灵活的需求。...注意:为了让 Django 能够识别使用自定义的用户模型,必须要在 settings.py 中设置自定义模块位置,如在 settings.py 上添加 AUTH_USER_MODEL = ‘blog.user...内置用户AbstractUser 我们在之前讲过了model模型的作用和父类的作用,这次介绍的内置用户AbstractUser就是Django内置的一个关于用户操作的类,它极大地方便了我们对model...模型中对User用户类的设计。

    2K10

    Django实战-信息资讯-重构 USER 模型

    一、指定自定义的用户模型Django 自定义的 User model 满足一些最低要求: 模型必须有一个唯一的字段可被用于识别目的。可以是一个用户名、电子邮件或任何其它独特属性。...定制一个 User model 最简单的方式是构造一个兼容的用户模型继承于 AbstractBaseUser。...二、为 User 模型自定义管理器 继承自 BaseUserManager from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin...这是一个抽象的类,可以为自定义用户模型中的类的层次结构中包含它。它提供所有 Django 权限类必须的方法和字段。...# AUTH_USER_MODEL 这个属性是 django 内置的,会主动到这个文件中查找这个属性, # 如果找到了,那么就会使用这个属性指定的模型来作为 User 对象 # AUTH_USER_MODEL

    92720

    django 解决扩展自带User表遇到的问题

    ,关联关系为一对一: 修改完成之后进行子表关联: from django.contrib.auth.models import AbstractUser, User from django.conf import...user表是必不可少的一部分,虽然很简单,但是呢还是在此来加深下自己的记忆。...在django项目中,所有的数据库表都是根据各APP的模型来生成的,我们创建项目后第一件事就是要去完善user表,这个利用的知识点就是Python类的继承,假如,要创建UserProfile类来继承原来的...AbstractUser类,从而继承原来user表的字段,又可以增加自己需要的字段: 在users 用户app的models.py做如下的修改: from django.db import models...最后迁移数据库,使用makemigrations 和 migrate 就可以完成user表的扩展了,刷新数据库,表是不是已经生成了0.0 以上这篇django 解决扩展自带User表遇到的问题就是小编分享给大家的全部内容了

    1.3K60

    Django 自定义用户 VS 用户资料

    1、问题背景在 Django 1.5.1 中,使用自定义用户,就像官方文档中描述的那样。发现所有内容都存储在一个表中,即 auth_user 表。...所以我只是想知道是否应该将这些信息放在 MyUser 类中,或者是否应该定义一个 UserProfile 类?为什么?2、解决方案方案一:当所有内容都放在一个表中时,数据库访问会更快。...使用旧方法,您必须连接辅助表才能获取用户的全部信息。通常,当您看到一对一的关系时,最好将它们合并到一个表中。但新的自定义用户模型还解决了另一个问题,即用户应该具有哪些属性?...Django 的信号来同步用户模型用户资料模型。...中使用自定义用户模型用户资料模型来存储用户数据了。

    10510

    Django项目知识点(二)

    用户注册 官方文档 django的强大之处在于开发效率高,内置了权限模块之类的很多常用功能。django内置权限系统有大的自定义功能扩展,不需要重复造轮子。...在settings.py中设置AUTH_USER_MODEL指向user的app的User模型 # 自定义用户模型 # 这里的user是app,User是模型 不是固定的 AUTH_USER_MODEL...,如email user app下的model from django.contrib.auth.models import AbstractUser,UserManager as _UserManager...通过上面改写UserManager的create_superuser创建超级用户可以不提供email字段 6.2 AbstractUser AbstractUser这是django特定的抽象用户 导入方式...: from django.contrib.auth.models import AbstractUser 创建用户的model,继承了AbstractUser class User(AbstractUser

    76530
    领券