如何使用Django默认的Auth权限管理系统

 更新时间:2023年02月13日 11:14:11   作者:Alan and fish  
本文主要介绍了如何使用Django默认的Auth权限管理系统,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1.Django默认已经提供了认证系统Auth模块。

认证系统包含:

  • 用户管理
  • 权限
  • 用户组
  • 密码哈希系统
  • 用户登录或内容显示的表单和视图
  • 一个可插拔的后台系统 admin

Django默认用户的认证机制依赖Session机制,我们在项目中将引入JWT认证机制,将用户的身份凭据存放在Token中,然后对接Django的认证系统,帮助我们来实现:

  • 用户的数据模型
  • 用户密码的加密与验证
  • 用户的权限系统

auth存在的位置 External Libraries\site-packages\django\contrib\..其中包括auth模块和admin模块.

2.Django用户模型

Django认证系统中提供了用户模型类User保存用户的数据,模型保存位置:D:\anaconda\Lib\site-packages\django\contrib\auth\models.py,默认的User包含以下常见的基本字段:

字段名字段描述
username必选。150个字符以内。 用户名可能包含字母数字,_@+ .-个字符。
first_name可选(blank=True)。 少于等于30个字符。
last_name可选(blank=True)。 少于等于30个字符。
email可选(blank=True)。 邮箱地址。
password必选。 密码的哈希加密串。 (Django 不保存原始密码)。 原始密码可以无限长而且可以包含任意字符。
groupsGroup 之间的多对多关系。
user_permissionsPermission 之间的多对多关系。
is_staff布尔值。 设置用户是否可以访问Admin 站点。
is_active布尔值。 指示用户的账号是否激活。 它不是用来控制用户是否能够登录,而是描述一种帐号的使用状态。
is_superuser是否是超级用户。超级用户具有所有权限。
last_login用户最后一次登录的时间。
date_joined账户创建的时间。 当账号创建时,默认设置为当前的date/time。

常用方法:

  • set_password(raw_password)

设置用户的密码为给定的原始字符串,并负责密码的。 不会保存User 对象。当Noneraw_password 时,密码将设置为一个不可用的密码。

  • check_password(raw_password)

如果给定的raw_password是用户的真实密码,则返回True,可以在校验用户密码时使用。

管理器方法:

管理器方法即可以通过User.objects. 进行调用的方法。

  • create_user(username, email=None, password=None, **extra_fields)

创建、保存并返回一个User对象。

  • create_superuser(username, email, password, **extra_fields)

create_user() 相同,但是设置is_staffis_superuserTrue

3.自定义User对象

因为系统默认自带的user对象很多属性和功能并不是我自己需要的,所以需要我们自己重新定义一个user对象.

第一步:创建一个user app

python manage.py startapp user

创建自定义user对象models.py

from django.db import models
from django.contrib.auth.models import AbstractUser

# Create your models here.
class user(AbstractUser):
    # 声明自定义user对象
    mobile=models.CharField(max_length=11,unique=True,verbose_name="手机号码")
    avatar=models.ImageField(upload_to="avatar",verbose_name="用户头像")

    class Mata:
        db_table="user"
        verbose_name="用户信息"
        verbose_name_plural=verbose_name

第二步:配置相关信息

进入主app下面的setting文件中

注册userapp

在这里插入图片描述

注册自定义模型

在这里插入图片描述

第三步:执行数据迁移

注意事项:如果是在第一次数据迁移之后,猜设置的AUTH_USER_MODEL自定义模型则会报错,解决方法如下:

  • 先把现有的数据库导出备份,然后清掉数据库中所有的数据表。
  • 把开发者创建的所有子应用下面的migrations目录下除了__init__.py以外的所有迁移文件,只要涉及到用户的,一律删除
  • 把django.contrib.admin.migrations目录下除了__init__.py以外的所有迁移文件,全部删除。
  • 把django.contrib.auth.migrations目录下除了__init__.py以外的所有迁移文件,全部删除。
  • 把reversion.migrations目录下除了__init__.py以外的所有迁移文件,全部删除。
  • 把xadmin.migrations目录下除了__init__.py以外的所有迁移文件,全部删除。
  • 接下来,执行数据迁移,回顾第0步中的数据,以后如果要修改用户相关数据,不需要重复本次操作,直接数据迁移即可。

删除表

在这里插入图片描述

删除user.migrations目录下除了__init__.py以外的所有迁移文件,只要涉及到用户的,一律删除

在这里插入图片描述

django.contrib.admin.migrations,django.contrib.auth.migrations,reversion.migrations,xadmin.migrations目录下除了__init__.py以外的所有迁移文件,全部删除

在这里插入图片描述

* 执行数据迁移
在terminal中执行:

python manage.py makemigrations
python manage.py migrate

到此这篇关于如何使用Django默认的Auth权限管理系统的文章就介绍到这了,更多相关Django Auth权限管理系统内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python实战之手写一个搜索引擎

    Python实战之手写一个搜索引擎

    这篇文章主要介绍了Python实战之手写一个搜索引擎,文中有非常详细的代码示例,对正在学习python的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • jupyter notebook加载和运行.py文件方式

    jupyter notebook加载和运行.py文件方式

    这篇文章主要介绍了jupyter notebook加载和运行.py文件方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • opencv python统计及绘制直方图的方法

    opencv python统计及绘制直方图的方法

    这篇文章主要介绍了opencv python统计及绘制直方图的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • windows中安装Python3.8.0的实现方法

    windows中安装Python3.8.0的实现方法

    这篇文章主要介绍了windows中安装Python3.8.0的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • 教你使用Python写一个简单的JSONParser

    教你使用Python写一个简单的JSONParser

    这篇文章主要介绍了教你使用Python写一个简单的JSONParser,它的整个效果,有点类似于 python 标准库 json 的 json.load() 方法,需要的朋友可以参考下
    2023-04-04
  • python tkinter与Mysql数据库交互实现账号登陆

    python tkinter与Mysql数据库交互实现账号登陆

    本文主要介绍了python tkinter与Mysql数据库交互实现账号登陆,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • PyTorch 中的傅里叶卷积实现示例

    PyTorch 中的傅里叶卷积实现示例

    这篇文章主要介绍了PyTorch 中的傅里叶卷积实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • python通过装饰器检查函数参数数据类型的方法

    python通过装饰器检查函数参数数据类型的方法

    这篇文章主要介绍了python通过装饰器检查函数参数数据类型的方法,涉及Python装饰器的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • python计算阶乘和的方法(1!+2!+3!+...+n!)

    python计算阶乘和的方法(1!+2!+3!+...+n!)

    今天小编就为大家分享一篇python计算阶乘和的方法(1!+2!+3!+...+n!),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02
  • 记录模型训练时loss值的变化情况

    记录模型训练时loss值的变化情况

    这篇文章主要介绍了记录模型训练时loss值的变化情况,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06

最新评论