django框架auth模块用法实例详解


Posted in Python onDecember 10, 2019

本文实例讲述了django框架auth模块用法。分享给大家供大家参考,具体如下:

auth模块的导入

from django.contrib import auth

django中的auth模块有其自己完整的一套方法: 登录验证、注销、用户的创建、比较用户输入的密码是否和数据库的一致、用户信息的修改

1 我们来生成db.sqlite3 (migrations,migrate),打开,从中我们可以找到表 auth_user ,整篇都是围绕这个表进行的

2  这个表里面暂时是空的,我们可以创建 ,例如:创建一个超级用户  

django框架auth模块用法实例详解

我们从表 auth_user 中可以看到生成了一条记录,里面的密码是经过加密的

django框架auth模块用法实例详解

3 创建一个登录视图和模板

django框架auth模块用法实例详解

上面的 authenticate方法

user = authenticate(username='someone',password='somepassword') 必须要有username和password

 4 用户的登出  logout

def log_out(request):
 auth.logout(request) #使用 logout 方法
 return redirect("/login/")

5 给用户增加一个修改密码的功能

def set_password(request):
 user=request.user
 state=""
 if request.method=="POST":
 oldpassword=request.POST.get('oldpassword','')
 newpassword=request.POST.get('newpassword','')
 repeatpassword=request.POST.get('repeatpassword','')

 if user.check_password(oldpassword):
  if not newpassword:
  state="新密码不能为空"
  elif newpassword != repeatpassword:
  state="重置的密码前后不一致"
  else:
  user.set_password(newpassword)
  user.save()
  return redirect("/login/")
 else:
  state="旧密码输入错误"

 return render(request,"set_password.html",{"state":state})#模板
<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>修改密码</title>
</head>
<body>
<form action="" method="post">
 {% csrf_token %}
 <div>用户:{{ user }}</div>
 <div>旧密码 <input type="text" name="oldpassword"></div>
 <div>新密码 <input type="text" name="newpassword"></div>
 <div>确认新密码 <input type="text" name="repeatpassword"></div>
 <div><input type="submit"> <span>{{ state }}</span></div>
</form>
</body>
</html>

check_password() 验证用户输入的密码是否和数据库中的一致 ,一致返回True,否则返回None

6 模拟登录将index作为首页,根据用户的登录与否选择不同的页面

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>
</head>
<body>
<h1>index</h1>
<p>hello {{ user }}</p>

{% if request.user.is_authenticated %}
 <a href="/logout/" rel="external nofollow" >注销</a>
 <a href="/set_password/" rel="external nofollow" >修改密码</a>
{% else %}
 <div><span>未登录</span></div>
 <p><a href="/login/" rel="external nofollow" >登陆</a></p>
 <p><a href="/reg/" rel="external nofollow" >注册</a></p>
{% endif %}
</body>
</html>

未登录时

django框架auth模块用法实例详解

尝试登录之后

django框架auth模块用法实例详解

下面修改密码报错情况

django框架auth模块用法实例详解

django框架auth模块用法实例详解

 总结:

导入:from django.contrib import auth

验证用户登录:user = authenticate(username='someone',password='somepassword')验证成功返回user对象,否则返回none

session的写操作:      auth.login(request,user) #session的写操作 对应于django_session表

用户的登出或者注销:auth.logout(request)

验证用户是否已经登录:# user=request.user   # if not user.is_authenticated(): return redirect("/login/")

验证用户输入的密码是否与数据库一致:

user=request.user
user.check_password(oldpassword) 成功返回True,否则为None

 修改密码:

user = User.objects.get(username='') #先获得user对象
user.set_password(password='')
user.save 

创建用户,必须要有两个信息,用户名和密码

from django.contrib.auth.models import User
user = User.objects.create_user(username='',password='',email='')

希望本文所述对大家基于Django框架的Python程序设计有所帮助。

Python 相关文章推荐
Python装饰器decorator用法实例
Nov 10 Python
Python实现检测服务器是否可以ping通的2种方法
Jan 01 Python
python list元素为tuple时的排序方法
Apr 18 Python
Python基于sklearn库的分类算法简单应用示例
Jul 09 Python
Django实战之用户认证(初始配置)
Jul 16 Python
Python配置虚拟环境图文步骤
May 20 Python
pyqt5 键盘监听按下enter 就登陆的实例
Jun 25 Python
基于python使用tibco ems代码实例
Dec 20 Python
TensorFlow实现自定义Op方式
Feb 04 Python
如何基于Django实现上下文章跳转
Sep 16 Python
用Python进行栅格数据的分区统计和批量提取
May 27 Python
Python数据处理的三个实用技巧分享
Apr 01 Python
django框架中间件原理与用法详解
Dec 10 #Python
Django2 连接MySQL及model测试实例分析
Dec 10 #Python
python实现将视频按帧读取到自定义目录
Dec 10 #Python
django连接mysql数据库及建表操作实例详解
Dec 10 #Python
python 通过视频url获取视频的宽高方式
Dec 10 #Python
Python imageio读取视频并进行编解码详解
Dec 10 #Python
Python中Subprocess的不同函数解析
Dec 10 #Python
You might like
PHILIPS AE3805收音机的分析打磨
2021/03/02 无线电
Discuz 6.0+ 批量注册用户名
2009/09/13 PHP
php写的带缓存数据功能的mysqli类
2012/09/06 PHP
Codeigniter操作数据库表的优化写法总结
2014/06/12 PHP
web的各种前端打印方法之jquery打印插件jqprint实现网页打印
2013/01/09 Javascript
jquery自动填充勾选框即把勾选框打上true
2014/03/24 Javascript
jQuery中:animated选择器用法实例
2014/12/29 Javascript
Java File类的常用方法总结
2015/03/18 Javascript
jquery插件jquery.beforeafter.js实现左右拖拽分隔条对比图片的方法
2015/08/07 Javascript
总结JavaScript中布尔操作符||与&amp;&amp;的使用技巧
2015/11/17 Javascript
JavaScript类型系统之基本数据类型与包装类型
2016/01/06 Javascript
详解JavaScript对象类型
2016/06/16 Javascript
D3.js实现散点图和气泡图的方法详解
2016/09/21 Javascript
jquery实现超简单的瀑布流布局【推荐】
2017/03/08 Javascript
three.js实现3D影院的原理的代码分析
2017/12/18 Javascript
jQuery选择器之基本过滤选择器用法实例分析
2019/02/19 jQuery
vuex存值与取值的实例
2019/11/06 Javascript
vue mvvm数据响应实现
2020/11/11 Javascript
用Python解析XML的几种常见方法的介绍
2015/04/09 Python
在Mac OS上搭建Python的开发环境
2015/12/24 Python
python组合无重复三位数的实例
2018/11/13 Python
Python对接支付宝支付自实现功能
2019/10/10 Python
pytorch中tensor张量数据类型的转化方式
2019/12/31 Python
一款利用html5和css3实现的3D立方体旋转效果教程
2016/04/26 HTML / CSS
HTML5拖拽的简单实例
2016/05/30 HTML / CSS
微软英国官方网站:Microsoft英国
2016/10/15 全球购物
Traffic People官网:女式花裙、上衣和连身裤
2020/10/12 全球购物
中学优秀班主任事迹材料
2014/05/01 职场文书
2015个人简历自我评价语
2015/03/11 职场文书
初婚初育证明范本
2015/06/18 职场文书
运动会宣传稿50字
2015/07/23 职场文书
数据结构课程设计心得体会
2016/01/15 职场文书
大学生社区义工服务心得体会
2016/01/22 职场文书
Vue3 Composition API的使用简介
2021/03/29 Vue.js
Vue elementUI表单嵌套表格并对每行进行校验详解
2022/02/18 Vue.js
Python OpenCV超详细讲解调整大小与图像操作的实现
2022/04/02 Python