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

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

替换User模型 新版Django推荐做法是,如果不想用默认User模型,那么就把它替换掉。...Django除了User模型,还有2个抽象模型AbstractUser和AbstractBaseUser,从源码中可以看到它们继承关系: class User(AbstractUser):...AbstractUser和AbstractBaseUser就是对User不同程度抽象,AbstractUser是User完整实现,可用于扩展User,AbstractBaseUser是高度抽象,可用于完全自定义...继承AbstractUser 除了代理模型和OneToOneField,扩展User新方式是定义新MyUser并继承AbstractUser,把User替换掉,再添加额外信息。...MyUser(AbstractUser): pass 第二步,settings.py中配置AUTH_USER_MODEL,指定新用户模型: AUTH_USER_MODEL = 'myapp.MyUser

1.2K10

拓展 User 模型

好在 Django 用户系统遵循可拓展设计原则,我们可以方便地拓展 User 模型。 继承 AbstractUser 拓展用户模型 这是推荐做法。...事实上,查看 User 模型源码就知道,User 也是继承自 AbstractUser 抽象基类,而且仅仅就是继承了 AbstractUser没有AbstractUser 做任何拓展。...根据你需求可以自己进一步拓展,例如增加用户头像、个性签名等等,添加多少属性字段没有任何限制。 同时,我们继承了 AbstractUser 内部类属性 Meta ,不过目前什么也没做。...使用 Profile 模式拓展用户模型 如果想为一个已使用了 Django 内置 User 模型项目拓展用户模型,上述继承 AbstractUser 拓展方式会变得有点麻烦。...Django 没有提供一套自动化方式将内置 User 迁移到自定义用户模型,因为 Django 已经为内置 User 模型生成了相关数据库迁移文件和数据库表。

1.5K50
您找到你想要的搜索结果了吗?
是的
没有找到

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

Django网络应用开发5项基础核心技术包括模型(Model)设计,URL 设计与配置,View(视图)编写,Template(模板)设计和Form(表单)使用。...现在大部分web项目基本都会有第三方授权登录,那 django 实现这一需求,应该有很多包可以用,比如 social-auth-app-django,在使用这样工具时,用户模型要不要做相应改动?...django 提供用户认证模块 AbstractUser 与 AbstractBaseUser,而 AbstractUser 继承了 AbstractBaseUser,AbstractUser 是一个完整用户模型...再来看下第一季都有哪些可以回顾和用得上小技能 本次创建 django 项目,新建用户模型继承 AbstractUser ,它是高度集成类,里面定义字段,不会完全显示,在迁移数据库时,就会创建。...如果项目只需要基本用户密码、用户类型等少数几个字段,这时候用 AbstractUser 会不合理,对数据库资源浪费,也会降低数据库效率。

75610

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

最近在用Django做一个小项目,需要将微信用户与网站用户进行关联,由于是微信订阅号,没有oauth网页授权权限,只能退而求其次,在响应中获取用户openid,来唯一标识用户。...Django中用户模型继承和扩展于AbstractUser,在用户模型中添加openid字段(models.py): class Users(AbstractUser): openid...,并使用这个模型来作为用户认证模型,需要在setting.py文件里指定认证模型(website是django应用名称,非项目名称): AUTH_USER_MODEL = 'website.Users...' 这样,我们就能够使用上面定义Users模型来进行用户登录和注册操作了。...request,user) 这样就完成了一个最基本Django用户认证。

2K10

django admin后管定制-显示字段实例

1、显示关键信息 效果如下图,这样就好看多啦。 ? 2、配置 在 admin.py 文件中配置一下就行。...自定义用户表和使用admin来管理数据库 django 自定义用户表 在使用django操作数据库时,django中生成默认User表,其中字段已经可以满足我们日常需求。...from django.db import models from django.contrib.auth.models import AbstractUser class User(AbstractUser...在admin.py中注册模型: from django.contrib import admin #引入要注册模型 from music.models import Music from music.models...设置模型 models 中文名,在models.py 类中添加: class Meta: # 设置模型名字,但是记得复数形式也要设置,否则有些地方就变成 verbose_name + s 了 verbose_name

2.8K20

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

1.6K20

Python Web 聊天室开发(三):用户认证和登录

在前两篇文章中: 在第一篇文章中,我们借助 Django 3 + Channels + Redis 实现了一个WebSocket 连接 Web 在线聊天室。...定义用户模型 用户模型我们使用 Django 提供了AbstractUser,这保留了 Django 自带了用户模型所有功能,并且后期还能自定义扩展: from django.contrib.auth.models...import AbstractUser # 用户模型 class User(AbstractUser): pass 然后修改聊天记录模型Message中字段,将username...verbose_name="写入时间") class Meta: ordering = ['-create_time'] 最后,在settings.py文件中指定User模型为系统认证模型...登录页: 登录错误信息提示: 完整动图演示: 如果未登录用户直接访问聊天房间URL,则会跳转到登录首页: 这样,我们就完成了在线聊天室用户认证功能扩展。

2K20

Django用户表创建(四)

首先进行基础分析工作 判断用户名是否为空,是否已注册 判断邮箱是否为空,是否已注册 判断密码是否为空,格式是否正确 一般注册操作还会有确认密码输入,所以我们会在前端中增加一。...但是写了这些还不够,因为用户名,密码,邮箱等都需要进行一定约束,id一般是作为主键 知道了这个之后,就需要想办法解决了,但是受限于我编码经验,所以我选择借鉴django大佬代码。...直接查看Django为admin编写用户类 from django.contrib.auth.models import AbstractUser按住ctrl+AbstractUser跳进去。...以下是django源码: class AbstractUser(AbstractBaseUser, PermissionsMixin): """ An abstract base class...,用于其他模型来继承,数据库迁移时不会创建ModelBase表 abstract = True 所以我们用户表model文件就是: from django.db import models

2.1K60

重新整理django中Auth模块

写法如下: # 引用Django自带User表,继承使用时需要设置 AUTH_USER_MODEL = "app名.UserInfo" 在modles.py创建表单模型可以对AbstractUser进行继承因为我们可以从源码中看出来...auth自带user表示继承AbstractUser类,所有我们可以可以同样继承然后对于他内容进行自定义 from django.contrib.auth.models import AbstractUser...class UserInfo(AbstractUser): 新增内容 通过源码我们可以看出自带几个内容 AbstractUser自带字段 源码里内容 username :账号...当调用该函数时,当前请求session信息会全部清除。该用户即使没有登录,使用该函数也不会报错。...若用户没有登录,则会跳转到django默认 登录URL '/accounts/login/ ' 并传递当前访问url绝对路径 (登陆成功后,会重定向到该路径)。

1K10

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

django入门:环境及项目搭建》 《django入门:数据模型》 《django入门:视图及模版》 《django入门:Admin管理系统及表单》 《django入门:通用视图类重构视图》 《用django...通过继承 AbstractUser 来实现 首先需要在 models.py 文件中创建自己 user model from django.contrib.auth.models import AbstractUser...,AbstractUser 源码也不是很多,可以自行查看 class User(AbstractUser): """ Users within the Django authentication...来实现, # 我们写这部分时候可以通过修改 AbstractUser 源码实现 from django.db import models from django.contrib.auth.models...,例如 avatar,再做数据库迁移,如果没有安装 pillow 模块,数据库迁移是会被打断,然后提示你需要安装 pillow class CustomUser(models.Model):

2.1K30

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

设置Proxy模型: 作用: 给模型增加操作方法 局限: 不能增加或减少User模型字段 好处: 不破坏原来User模型表结构 如果你对Django提供字段,以及验证方法都比较满意,没有什么需要改...比如,我想要加一个存储用户手机号字段,怎么办?   聪明你可能会想到新建另外一张表然后通过一对一和内置auth_user表关联,这样虽然能满足要求但是有没有更好实现方式呢?   ...这样既能根据项目需求灵活设计用户表,又能使用Django强大认证系统了。...写法如下: # 引用Django自带User表,继承使用时需要设置,这样django就知道从我们app名应用下models文件中去查找UserInfo这张表了 AUTH_USER_MODEL =...print(request.user) #没有经过login方法来封装用户信息,那么这个显示是一个匿名用户 print(request.user.id) #None print

2.1K20

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

', 'users.apps.UsersConfig', ] 用户模块 Django有自带了一个用户管理模块,所以不再从头编写,而是从它基础上进行二次开发 用户表 Django自带用户管理模块...models.py文件为: from django.contrib.auth.models import AbstractUser 简单看一下AbstractUser和它父类 它里面包含了很多登录常用字段了...id password last_login is_superuser username first_name last_name email is_staff is_active date_joined...import models from django.contrib.auth.models import AbstractUser from django.core.exceptions import...,下次数据库没有变更,进行迁移时候只需要输入 python manage.py migrate 查看生成表 打开数据库连接工具,以SQLite方式进行连接 文件路径为backend/db.sqlite3

63320

django自关联,auth模块

这样我们就直接用表内关联将外键关联设置成自身表字段 2.例如,对于微博评论,每条评论都可能有子评论,但每条评论字段内容应该都是相同,并且每条评论都只有一个父评论,这就满足了一对多情形,父评论id...,即使我们没有建表,django是不是也会创建好多张表?...# django中间件中有没有一个叫 'django.contrib.auth.middleware.AuthenticationMiddleware'中间件,它干了件什么事,能不能推导一下?...= "app名.models里面对应模型表名" AUTH_USER_MODEL = "app01.User" 就可以在app下models.py文件中创建我们自己用户信息表了 # models.py...中 from django.contrib.auth.models import User,AbstractUser # 继承了auth中user表 class UserInfo(AbstractUser

1.1K20

自定义 DjangoUser Model,扩展 AbstractUser类注意事项

自定义 User Model 方法1: 扩展 AbstractUser类 如果你对django自带User model刚到满意, 又希望额外field的话, 你可以扩展AbstractUser类:...原文链接: http://www.weiguda.com/blog/28/ 另外一篇参考文章  Django 重写用户模型 django——重写用户模型 Django内建User模型可能不适合某些类型项目...是必需 4.扩展Django默认User 如果你完全满意Django用户模型和你只是想添加一些额外属性信息,你只需继承 django.contrib.auth.models.AbstractUser...AbstractUser 作为一个抽象模型提供了默认User所有的实现(AbstractUser provides the full implementation of the default User...然而,你也需要覆写一些django.contrib.auth.models.AbstractUser 字段定义不在你自定义用户模型

5.9K20
领券