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二分法实现实例
Nov 21 Python
全面解读Python Web开发框架Django
Jun 30 Python
python操作 hbase 数据的方法
Dec 18 Python
使用Python对Access读写操作
Mar 30 Python
放弃 Python 转向 Go语言有人给出了 9 大理由
Oct 20 Python
python使用TensorFlow进行图像处理的方法
Feb 28 Python
[原创]Python入门教程5. 字典基本操作【定义、运算、常用函数】
Nov 01 Python
OpenCV 轮廓检测的实现方法
Jul 03 Python
python numpy 反转 reverse示例
Dec 04 Python
tensorflow中tf.slice和tf.gather切片函数的使用
Jan 19 Python
详解Pycharm出现out of memory的终极解决方法
Mar 03 Python
pip安装提示Twisted错误问题(Python3.6.4安装Twisted错误)
May 09 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
深入密码加salt原理的分析
2013/06/06 PHP
php验证是否是md5编码的简单代码
2014/04/01 PHP
Yii数据库缓存实例分析
2016/03/29 PHP
PHP递归的三种常用方式
2019/02/28 PHP
php提供实现反射的方法和实例代码
2019/09/17 PHP
Docker 安装 PHP并与Nginx的部署实例讲解
2021/02/27 PHP
js限制文本框输入长度两种限制方式(长度、字节数)
2012/12/19 Javascript
js单向链表的具体实现实例
2013/06/21 Javascript
javascript 处理null及null值示例
2014/06/09 Javascript
js重写alert控件(适合学习js的新手朋友)
2014/08/24 Javascript
jQuery中innerWidth()方法用法实例
2015/01/19 Javascript
jquery表单验证插件(jquery.validate.js)的3种使用方式
2015/03/28 Javascript
QQ登录背景闪动效果附效果演示源码下载
2015/09/22 Javascript
Javascript中的arguments对象
2016/06/20 Javascript
jQuery获取table行数并输出单元格内容的实现方法
2016/06/30 Javascript
AngularJs bootstrap搭载前台框架——准备工作
2016/09/01 Javascript
js防阻塞加载的实现方法
2016/09/09 Javascript
BootStrap 弹出层代码
2017/02/09 Javascript
利用vue.js实现被选中状态的改变方法
2018/02/08 Javascript
JS+DIV实现拖动效果
2020/02/11 Javascript
原生js实现的金山打字小游戏(实例代码详解)
2020/03/16 Javascript
JQuery基于FormData异步提交数据文件
2020/09/01 jQuery
Centos5.x下升级python到python2.7版本教程
2015/02/14 Python
浅谈python中scipy.misc.logsumexp函数的运用场景
2016/06/23 Python
python对json的相关操作实例详解
2017/01/04 Python
Python结合ImageMagick实现多张图片合并为一个pdf文件的方法
2018/04/24 Python
树莓派极简安装OpenCv的方法步骤
2019/10/10 Python
关于Flask项目无法使用公网IP访问的解决方式
2019/11/19 Python
Python实现扫码工具的示例代码
2020/10/09 Python
python中@property的作用和getter setter的解释
2020/12/22 Python
处理textarea中的换行和空格
2019/12/12 HTML / CSS
连锁酒店店长职责范本
2014/02/13 职场文书
干部现实表现材料
2014/02/13 职场文书
欢迎词范文
2015/01/27 职场文书
《莫泊桑拜师》教学反思
2016/02/22 职场文书
用Python写一个简易版弹球游戏
2021/04/13 Python