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

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

AbstractUser和AbstractBaseUser就是对User的不同程度的抽象,AbstractUser是User的完整实现,可用于扩展User,AbstractBaseUser是高度抽象,可用于完全自定义...继承AbstractUser 除了代理模型和OneToOneField,扩展User的新方式是定义新的MyUser并继承AbstractUser,把User替换掉,再添加额外信息。...继承AbstractBaseUser 继承AbstractUser只能做扩展,如果我们想完全自定义用户模型,那么就需要继承AbstractBaseUser,再重写属性和方法。...参考AbstractUser的实现: REQUIRED_FIELDS = ['email'] 这表示email是必填的,在使用createsuperuser命令时,会提示必须输入。...Template和Form不属于前后端分离的技术,在学习时可以选择性跳过。公众号后台回复“加群”,“Python互助讨论群”欢迎你。

1.2K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

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

    自定义 User Model 方法1: 扩展 AbstractUser类 如果你对django自带的User model刚到满意, 又希望额外的field的话, 你可以扩展AbstractUser类:...方法3: 使用OneToOneField 如果你想建立一个第三方模块发布在PyPi上, 这一模块需要根据用户储存每个用户的额外信息....当通过createsuperuser管理命令创建一个用户时,用于提示的一个字段名称列表。 class MyUser(AbstractBaseUser):     ...     ...是必需的 4.扩展Django默认的User 如果你完全满意Django的用户模型和你只是想添加一些额外的属性信息,你只需继承 django.contrib.auth.models.AbstractUser...扩展User时必须重写。 UserChangeForm 依赖于User Model. 扩展User时必须重写。

    6.3K20

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

    from django.db import models # 有个坑,扩展字段后密码会明文,当我们提交的时候需要进行设置,在后面的代码中会提到 class User(AbstractUser):...这种方法适合只需要扩展 User Model 中的字段,会继承之前 AbstractUser 的全部字段,系统自带的 User 也是通过继承 AbstractUser 来实现的 # 系统的 User 源码...而官方推荐的则可以不用考虑这个问题 4. 通过元类进行扩展 在网上还找到一种通过元类来扩展字段的方法,这边附上链接 通过元类扩展 User 字段不多讲述。...和 renderer_classes 基本每个 view 都类似,但是涉及到图片上传,一定要添加 FileUploadParser 用户端上传图片后,我们直接保留到项目下。...至于如何设计每个人都不同,我的思路是每个用户的头像都保存到各自以用户名为名的文件夹下,为了防止前一张头像被覆盖,所以用时间戳作为图像名,然后加上客户端回传的后缀名就可以生成我们的图片文件了。

    2.2K30

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

    现在大部分web项目基本都会有第三方授权登录,那 django 实现这一需求,应该有很多包可以用,比如 social-auth-app-django,在使用这样的工具时,用户模型要不要做相应的改动?...django 提供用户认证模块 AbstractUser 与 AbstractBaseUser,而 AbstractUser 继承了 AbstractBaseUser,AbstractUser 是一个完整的用户模型...再来看下第一季都有哪些可以回顾和用得上的小技能 本次创建的 django 项目,新建的用户模型继承 AbstractUser ,它是高度集成的类,里面定义的字段,不会完全显示,在迁移数据库时,就会创建。...如果项目只需要基本的用户密码、用户类型等的少数几个字段,这时候用 AbstractUser 会不合理,对数据库资源的浪费,也会降低数据库效率。...REQUIRED_FIELDS 必须设置,通过 createsuperuser 管理命令创建用户时,用于提示字段名称列表 USERNAME_FIELD 必须设置,设置认证标识,标识的字段 unique

    78610

    使用Django实现微信公众号用户openid登录认证

    最近在用Django做一个小项目,需要将微信的用户与网站的用户进行关联,由于是微信的订阅号,没有oauth网页授权的权限,只能退而求其次,在响应中获取用户的openid,来唯一的标识用户。...Django中用户的模型继承和扩展于AbstractUser,在用户模型中添加openid字段(models.py): class Users(AbstractUser): openid...= models.CharField(max_length=100,blank=True,null=True,verbose_name="openid",unique=True) 我们扩展了用户的模型...Users.DoesNotExist: return None 2、在配置文件setting.py中指定认证后端: 在底层,Django 维护一个“认证后台”的列表...当调用django.contrib.auth.authenticate() 时,Django 会尝试所有的认证后台进行认证。

    2.2K10

    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会为其生成相关数据库迁移文件和数据库表,采用继承方式拓展会比较麻烦。)...,没有对 AbstractUser 做任何的拓展,所以,如果我们可以自己继承 AbstractUser,并根据自己的需求进行拓展。...python manage.py migrate 成功后,Django便会使用我们自定义的用户模型作为默认的用户模型了 注意:一定要在配置好 AUTH_USER_MODEL 变量后再迁移数据库 参考链接

    1.6K20

    Django auth组件

    三.扩展默认的auth_user表 一.认证系统 Django自带一个用户认证系统,用于处理用户账户、群组、许可和基于cookie的用户会话。...三.扩展默认的auth_user表 虽然内置的认证系统很好用,但是auth_user表的字段只有固定的几个,实际的应用中需要的字段更多,所以需要对默认的auth_user表进行扩展,第一时间想到的方法是新建另外一张表通过一对一和内置的...auth_user表关联,这样的确可以满足要求,但是其实可以更好,就是通过继承内置的AbstractUser类,来定义一个自己的Model类。...from django.contrib.auth.models import AbstractUser class UserInfo(AbstractUser): phone = models.CharField...(max_length=255) address = models.CharField(max_length=255) 通过这种方法扩展内置的auth_user表之后,一定要在settings.py

    93240

    Django项目知识点(二)

    点击上方 毛利学python,选择置顶或星标 第一时间送达Python 技术干货! 5. 自定义过滤器和模板标签 5.1 新建templatetags模块 ?...用户注册 官方文档 django的强大之处在于开发效率高,内置了权限模块之类的很多常用功能。django内置权限系统有大的自定义功能扩展,不需要重复造轮子。...,如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

    77430

    django 关于User模型

    if user is not None: # 执行验证通过后的代码 else: # 执行验证没有通过的代码。 扩展用户模型: Django内置的User模型虽然已经足够强大了。...那么这时候我们就需要扩展用户模型了。扩展用户模型有多种方式。这里我们来一一讨论下。 1. 设置Proxy模型: 如果你对Django提供的字段,以及验证的方法都比较满意,没有什么需要改的。...继承自AbstractUser: 对于authenticate不满意,并且不想要修改原来User对象上的一些字段,但是想要增加一些字段,那么这时候可以直接继承自django.contrib.auth.models.AbstractUser...示例代码如下: from django.contrib.auth.models import AbstractUser class User(AbstractUser): telephone =...REQUIRED_FIELDS:一个字段名列表,用于当通过createsuperuser管理命令创建一个用户时的提示。 is_active:一个布尔值,用于标识用户当前是否可用。

    1.1K30

    【Django】 开发:补充知识

    有需要上网现查现学的东西。 分页 分页是指在web页面有大量数据需要显示,为了阅读方便在每个页页中只显示部分数据。 好处: 方便阅读 减少数据提取量,减轻服务器压力。...Paginator对象 负责分页数据整体的管理 对象的构造方法 参数 需要分类数据的对象列表 每页数据个数 返回值: Paginator的对象 Paginator属性...它将被浏览器用于“另存为…”对话框 对于CSV文件中的每一行,调用writer.writerow,传递一个可迭代对象,如列表或元组。...auth扩展字段 如果需要在默认auth表上扩展新的字段,如phone 添加新的应用 定义模型类 继承 AbstractUser settings.py中 指明 AUTH_USER_MODEL = ‘应用名...process=4 # 每个进程的线程个数 threads=2 # 服务的pid记录文件 pidfile=uwsgi.pid # 服务的目志文件位置

    6.4K30

    django-Auth模块(详细介绍)

    当调用该函数时,当前请求的session信息会全部清除。该用户即使没有登录,使用该函数也不会报错。...3 扩展默认的auth_user表 这内置的认证系统这么好用,但是auth_user表字段都是固定的那几个,我在项目中没法拿来直接使用啊! 比如,我想要加一个存储用户手机号的字段,怎么办?...我们可以通过继承内置的 AbstractUser 类,来定义一个自己的Model类。 这样既能根据项目需求灵活的设计用户表,又能使用Django强大的认证系统了。...from django.contrib.auth.models import AbstractUser class UserInfo(AbstractUser): """ 用户信息表...max_length=11, null=True, unique=True) def __str__(self): return self.username 注意: 按上面的方式扩展了内置的

    1.2K20

    4.寻光集后台管理系统-用户管理(用户表)

    背景 页面中有很多的功能,对于不同的权限需要展示不同的页面,不同的权限可以操作的范围也不同,所以需要进行登录操作,并进行权限管理。...Django有自带了一个用户管理模块,所以不再从头编写,而是从它的基础上进行二次开发 用户表 Django自带用户管理模块的models.py文件为: from django.contrib.auth.models...import AbstractUser 简单看一下AbstractUser和它的父类 它里面包含了很多登录的常用字段了 id password last_login is_superuser username...models.CharField('姓名', max_length=, help_text='姓名', error_messages={'max_length': '姓名长度不正确', }) 权限列表..., help_text='权限', null=True) REQUIRED_FIELDS = ['mobile', 'name'] # 在通过 createsuperuser 管理命令创建用户时

    65720

    浅谈设计模式 - 建造者模式(十七)

    使用建造者对于具体的实例进行一层”保护“,这样直接对于对象的生成过程封闭并且保证对象的「线程安全」: public class UserBuilder { /** * 用户id...*/ private final String orgName; public static class Builder { /** * 用户...,这个案例的表现了对于构造器的 「进阶用法」,对于构造器也可以进行动态扩展,这里直接给出代码了,在书中的案例会更为复杂一点,这里进行了简化。...} } 具体的实现产品以及子类化的构建器,可以看到通过这种方式,就可以完全发挥建造者模式的作用了,不仅保证了动态扩展,同时可以保证细节处理和公用的处理进行解耦,但是使用这种设计模式需要一定的编程经验才写得出...,对于建造者的深层扩展需要深厚的编程经验和技巧支持,这是我们需要进步和学习的点,但是写出这样的代码无疑需要大量的代码编写练习。

    42920
    领券