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 相关文章推荐
Windows下python2.7.8安装图文教程
May 26 Python
Python探索之URL Dispatcher实例详解
Oct 28 Python
浅谈python3.x pool.map()方法的实质
Jan 16 Python
Python中的元组介绍
Jan 28 Python
pandas按行按列遍历Dataframe的几种方式
Oct 23 Python
解决Python3下map函数的显示问题
Dec 04 Python
将labelme格式数据转化为标准的coco数据集格式方式
Feb 17 Python
Python通过Pillow实现图片对比
Apr 29 Python
python中如何进行连乘计算
May 28 Python
如何理解python面向对象编程
Jun 01 Python
Sentry错误日志监控使用方法解析
Nov 12 Python
python文本处理的方案(结巴分词并去除符号)
May 26 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高自定义性安全验证码代码
2011/11/27 PHP
利用php递归实现无限分类 格式化数组的详解
2013/06/08 PHP
PHP基于curl实现模拟微信浏览器打开微信链接的方法示例
2019/02/15 PHP
简单的无缝滚动程序-仅几行代码
2007/05/08 Javascript
多种方式实现JS调用后台方法进行数据交互
2013/08/20 Javascript
js 限制input只能输入数字、字母和汉字等等
2013/12/18 Javascript
手机平板等移动端适配跳转URL的js代码
2014/01/25 Javascript
js轮播图代码分享
2016/07/14 Javascript
浅析vue数据绑定
2017/01/17 Javascript
jQuery中ztree 点击文本框弹出下拉框的实例代码
2017/02/05 Javascript
JS三目运算(三元运算)方法详解
2017/03/01 Javascript
nodejs Assert中equal(),strictEqual(),deepEqual(),strictDeepEqual()比较
2017/09/18 NodeJs
深入浅析JS中的严格模式
2018/06/04 Javascript
深入理解JavaScript的async/await
2018/08/05 Javascript
webpack4.0+vue2.0利用批处理生成前端单页或多页应用的方法
2019/06/28 Javascript
vue组件内部引入外部js文件的方法
2020/01/18 Javascript
vue中el-input绑定键盘按键(按键修饰符)
2020/07/22 Javascript
javascript全局自定义鼠标右键菜单
2020/12/08 Javascript
python 中文字符串的处理实现代码
2009/10/25 Python
python获取糗百图片代码实例
2013/12/18 Python
Pandas 数据框增、删、改、查、去重、抽样基本操作方法
2018/04/12 Python
Django处理文件上传File Uploads的实例
2018/05/28 Python
numpy添加新的维度:newaxis的方法
2018/08/02 Python
完美解决python3.7 pip升级 拒绝访问问题
2019/07/12 Python
python笔记_将循环内容在一行输出的方法
2019/08/08 Python
python隐藏类中属性的3种实现方法
2019/12/19 Python
Python3 socket即时通讯脚本实现代码实例(threading多线程)
2020/06/01 Python
django ObjectDoesNotExist 和 DoesNotExist的用法
2020/07/09 Python
纯css3实现思维导图样式示例
2018/11/01 HTML / CSS
上课迟到检讨书100字
2014/01/11 职场文书
劲霸男装广告词改编版
2014/03/21 职场文书
《美丽的丹顶鹤》教学反思
2014/04/22 职场文书
培训心得体会怎么写
2016/01/25 职场文书
导游词之介休绵山
2019/12/31 职场文书
解决SpringBoot文件上传临时目录找不到的问题
2021/07/01 Java/Android
基于Redis zSet实现滑动窗口对短信进行防刷限流的问题
2022/02/12 Redis