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 随机数生成的代码的详细分析
May 15 Python
Python实现图片转字符画的示例代码
Aug 21 Python
Python中表示字符串的三种方法
Sep 06 Python
Java实现的执行python脚本工具类示例【使用jython.jar】
Mar 29 Python
异步任务队列Celery在Django中的使用方法
Jun 07 Python
python3下载抖音视频的完整代码
Jun 05 Python
python SQLAlchemy的Mapping与Declarative详解
Jul 04 Python
使用WingPro 7 设置Python路径的方法
Jul 24 Python
Django CSRF跨站请求伪造防护过程解析
Jul 31 Python
PyTorch中 tensor.detach() 和 tensor.data 的区别详解
Jan 06 Python
用Python实现Newton插值法
Apr 17 Python
Python Matplotlib绘制两个Y轴图像
Apr 13 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
从php核心代码分析require和include的区别
2011/01/02 PHP
php实现读取和写入tab分割的文件
2015/06/01 PHP
PHP模板解析类实例
2015/07/09 PHP
JavaScript实现删除电脑的关机键
2016/07/26 PHP
php使用curl模拟多线程实现批处理功能示例
2019/07/25 PHP
为你的 Laravel 验证器加上多验证场景的实现
2020/04/07 PHP
javascript入门基础之私有变量
2010/02/23 Javascript
jQuery取得设置清空select选择的文本与值
2014/07/08 Javascript
深入剖析JavaScript:Object类型
2016/05/10 Javascript
vue自定义指令实现v-tap插件
2016/11/03 Javascript
js原生实现FastClick事件的实例
2016/11/20 Javascript
jQuery联动日历的实例解析
2016/12/02 Javascript
Vue.js中的图片引用路径的方式
2017/07/28 Javascript
基于vue实现网站前台的权限管理(前后端分离实践)
2018/01/13 Javascript
前端MVVM框架解析之双向绑定
2018/01/24 Javascript
JavaScript实现图片懒加载的方法分析
2018/07/05 Javascript
vuejs使用axios异步访问时用get和post的实例讲解
2018/08/09 Javascript
cocos2dx+lua实现橡皮擦功能
2018/12/20 Javascript
react 移动端实现列表左滑删除的示例代码
2019/07/04 Javascript
[55:45]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第三场 8.24
2019/09/10 DOTA
[57:22]完美世界DOTA2联赛PWL S2 FTD vs PXG 第二场 11.27
2020/12/01 DOTA
每天迁移MySQL历史数据到历史库Python脚本
2018/04/13 Python
selenium+python自动化测试之页面元素定位
2019/01/23 Python
python队列Queue的详解
2019/05/10 Python
html5配合css3实现带提示文字的输入框(摆脱js)
2013/03/08 HTML / CSS
Html5原创俄罗斯方块(基于canvas)
2019/01/07 HTML / CSS
美国著名珠宝品牌之一:Jared The Galleria Of Jewelry
2016/10/01 全球购物
.NET初级开发工程师面试题
2014/04/18 面试题
酒吧创业计划书
2014/01/18 职场文书
社区党员先进事迹
2014/01/22 职场文书
上班看电影检讨书
2014/02/12 职场文书
安全生产网格化管理实施方案
2014/03/01 职场文书
乡镇保密工作责任书
2014/07/28 职场文书
研究生导师推荐信
2014/09/06 职场文书
青年志愿者服务活动总结
2015/05/06 职场文书
自考生自我评价
2019/06/21 职场文书