首页
学习
活动
专区
工具
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

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

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

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

    拓展 User 模型

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

    1.6K50

    使用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用户认证。

    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会为其生成相关数据库迁移文件和数据库表,采用继承方式拓展会比较麻烦。)...),如下,可知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,则会跳转到登录首页: 这样,我们就完成了在线聊天室的用户认证功能扩展。

    2.1K20

    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.2K60

    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.2K30

    重新整理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

    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.2K20

    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

    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

    65620

    Django之auth模块(用户认证)

    对象 此函数使用django的session框架给某个已认证的用户附加上session id等信息。...若用户没有登录,则会跳转到django默认的 登录URL '/accounts/login/ ' (这个值可以在settings文件中通过LOGIN_URL进行修改)。...继承表的好处是我们可以增加一些自己需要的字段,并且同时可以使用auth模块提供的接口、方法 下面就讲一下继承auth的方法: 1、导入AbstractUser类,并且写一个自定义的类,继承AbstractUser...类,如下: from django.contrib.auth.models import AbstractUser class UserInfo(AbstractUser): """...2、这样写完之后,还需要在setting.py文件里配置: AUTH_USER_MODEL = 'blog.UserInfo' 这样,django就知道从blog项目下的models去查找UserInfo

    1.6K50

    自定义 Django的User 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 字段的定义不在你自定义用户模型中的。

    6.3K20
    领券