Django auth 应用模块详解
作者:梁辰兴 发布时间:2023-05-20 11:17:17
Django auth 应用模块
在设计开发任何一个站点的时候都需要有“用户”的概念,从用户的注册、登陆、退出或者注销,到用户的浏览、订阅等,这些都需要用户管理系统来实现。如果没有时间积累和相关开发工作经验,设计一个优秀的用户系统是很困难的。那么 Django 又是如何解决这个问题的呢?
一,Django的auth模块
Django 作为功能完善的 Web 框架充分考虑到这一点,它提供的 auth 模块能够快速的实现用户模块的基本功能。
新建项目后,Django 就把 auth 模块的所有功能提供给了开发者使用,开发者可以调用相应的接口,实现不同的功能需求。auth 模块定义了一张名叫 auth_user 的数据表,该表是 auth 模块的内建用户表,开发者调用 auth 模块的相应接口生成此表,auth_user 表的字段以及字段类型,如下所示。
+--------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| password | varchar(128) | NO | | NULL | |
| last_login | datetime(6) | YES | | NULL | |
| is_superuser | tinyint(1) | NO | | NULL | |
| username | varchar(150) | NO | UNI | NULL | |
| first_name | varchar(30) | NO | | NULL | |
| last_name | varchar(150) | NO | | NULL | |
| email | varchar(254) | NO | | NULL | |
| is_staff | tinyint(1) | NO | | NULL | |
| is_active | tinyint(1) | NO | | NULL | |
| date_joined | datetime(6) | NO | | NULL | |
+--------------+--------------+------+-----+---------+----------------+
11 rows in set (0.02 sec)#auth_user表
现在新建一张 auth_user 用户表,并为此表添加一个新用户 user。首先用如下方式引入 auth模块的 User 方法:
from django.contrib.auth.models import User
然后通过下面方法创建新用户 user ,如下所示:
user=User.objects.create_user(username='JB51',password='123456',email='123456@qq.com')
save()#调用该方法保存数据
同时也可以使用如下方法修改密码:
user.set_password(password='12345abc')#会对原密码进行修改
根据具体的业务需求,还可以对表的字段进行增加、删除、更改。
当涉及到用户概念的时候也会产生用户权限问题,比如,如何划分普通用户和超级管理员用户?针对权限问题,Django 也提供了解决问题的方案,auth 模块提供了标准的权限管理系统,它配合 Admin 后台可以快速建立网站管理系统。
auth 模块提供了认证用户功能,可以用下面方式引入后使用:
from django.contrib.auth import authenticate
然后使用关键字传参的方法来传递用户凭证,从而达到用户认证的目的:
user = authenticate(username='CSDN',password='12345abc')
二,auth应用模块的其他作用
auth 模块还实现一些其它的功能,比如:
用户的登录(login)、退出(logout)功能,封装在 django.contrib.auth 里;
用户权限系统封装在 django.contrib.auth.models.Permission 中 ,可以对用户的权限进行增加、修改、删除;
用户组可以通过 from django.contrib.auth.models.Group 导入后来创建组或者删除组。
列举一些简单应用方法:
user.user_permission.add(permission)#给某个用户权限的添加权限
group = Group.objects.create(name=group_name)#添加新的用户组
group.save() #保存新建好的用户组
group.delete()#删除用户组
三,auth模块总结
auth 模块提供的主要功能总结如下:
实现并维护了用户与用户组的增加、删除、更改功能;
实现了用户权限与用户组权限的增加、删除、更改;
实现了可以自定义用户权限与用户组权限功能。
除了以上功能外,Django auth 模块还提供了权限验证等功能以及一些常用的方法。
auth 模块帮助开发人员提高了工作效率,因为每个 Web 站点的权限管理模块或者用户管理模块基本都是相同的逻辑,Django 的 auth 模块使开发者们不必在为一些重复性的逻辑进行构建。在实际开发工作中,用户模块与权限管理模块需要与实际相结合,开发者可以根据业务需求自定义或者重写相应方法,以达到和实际业务相契合的目的。
来源:https://blog.csdn.net/m0_62617719/article/details/127808920
猜你喜欢
- 如下所示:var myarr=new Array(); //先声明一维 for(var i=0;i<2;i++){ //一
- tensorflow官方提供了3种方法来读取数据:预加载数据(preloaded data):在TensorFlow图中定义常量或变量来保存
- 数据表:列转行:利用max(case when then)max---聚合函数 取最大值(case course when '语文&
- 本文实例为大家分享了Openlayers地图比例尺控件的具体代码,供大家参考,具体内容如下1、新建一个html页面,引入ol.js和ol.c
- SQL Server数据库查询速度慢的原因有很多,常见的有以下几种:1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)
- 概述相信我们经常会遇到这样的场景:想要了解双十一天猫购买化妆品的人员中平均消费额度是多少(这可能有利于对商品价格区间的定位);或者不同年龄段
- 先来思考一个问题,B站一个视频的弹幕最多会有多少?比较多的会有2000条吧,这么多数据,B站肯定是不会直接把弹幕和这个视频绑在一起的。也就是
- 目录func Containsfunc HasPrefixfunc HasSuffixfunc Replacefunc Splitfunc
- 散点图什么是散点图?散点图是指在数理统计回归分析中,数据点在直角坐标系平面上的分布图, 散点图表示因变量随自变量而变化的大致趋势,
- 开启mysql的远程访问权限默认mysql的用户是没有远程访问的权限的,因此当程序跟数据库不在同一台服务器上时,我们需要开启mysql的远程
- queue分类python3 queue分三类:先进先出队列后进先出的栈优先级队列他们的导入方式分别是:from queue import
- 本文实例讲述了Python运维自动化之nginx配置文件对比操作。分享给大家供大家参考,具体如下:文件差异对比diff.py#!/usr/b
- 在照着Tensorflow官网的demo敲了一遍分类器项目的代码后,运行倒是成功了,结果也不错。但是最终还是要训练自己的数据,所以尝试准备加
- Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python 的设计具有很强的可读性,相比其他语言经常使用英文
- 方法1: 用SET PASSWORD命令mysql -u rootmysql> SET PASSWORD FOR 'root&
- 今天在工作中写项目的时候,遇到了一个让我感到几乎无解的问题,在转换了思路后,想出了一个折中的解决方案,记录如下。其实,问题的场景,非常简单:
- 这篇文章主要介绍了基于python调用psutils模块过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值
- 提到 super,最直接的想法就是它代表了父类,替父类执行某些方法。但是理解也仅止步于此,下面对 super 做进一步理解super 的完整
- Check In/Out功能简介:该功能是专门针对多用户管理而预设的。即多用户使用多帐号管理同一站点。
- 本文实例讲述了php函数serialize()与unserialize()用法。分享给大家供大家参考。具体方法如下:该实例主要讲述了php函