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多线程threading.Lock锁用法实例
Nov 01 Python
详解python里使用正则表达式的分组命名方式
Oct 24 Python
pandas数据预处理之dataframe的groupby操作方法
Apr 13 Python
python写入并获取剪切板内容的实例
May 31 Python
Python决策树之基于信息增益的特征选择示例
Jun 25 Python
对python中矩阵相加函数sum()的使用详解
Jan 28 Python
python学生管理系统学习笔记
Mar 19 Python
在Python中利用pickle保存变量的实例
Dec 30 Python
python常用运维脚本实例小结
Feb 14 Python
Python标准库:内置函数max(iterable, *[, key, default])说明
Apr 25 Python
Python ConfigParser模块的使用示例
Oct 12 Python
python库Tsmoothie模块数据平滑化异常点抓取
Jun 10 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
人大复印资料处理程序_补充篇
2006/10/09 PHP
PHP乱码问题,UTF-8乱码常见问题小结
2012/04/09 PHP
php上传文件,创建递归目录的实例代码
2013/10/18 PHP
php 遍历目录,生成目录下每个文件的md5值并写入到结果文件中
2016/12/12 PHP
老生常谈PHP 文件写入和读取(必看篇)
2017/05/22 PHP
Ubuntu 16.04中Laravel5.4升级到5.6的步骤
2018/12/07 PHP
javascript中运用闭包和自执行函数解决大量的全局变量问题
2010/12/30 Javascript
JavaScript 选中文字并响应获取的实现代码
2011/08/28 Javascript
利用CSS、JavaScript及Ajax实现高效的图片预加载
2013/10/16 Javascript
ext前台接收action传过来的json数据示例
2014/06/17 Javascript
浅谈Javascript中深复制
2014/12/01 Javascript
jquery实现的判断倒计时是否结束代码
2016/02/05 Javascript
vue中用H5实现文件上传的方法实例代码
2017/05/27 Javascript
Javascript中Promise的四种常用方法总结
2017/07/14 Javascript
vue实现自定义日期组件功能的实例代码
2018/11/06 Javascript
JavaScript实现滑动门效果
2020/01/18 Javascript
PHP 502bad gateway原因及解决方案
2020/11/13 Javascript
python操作xml文件示例
2014/04/07 Python
详解Python发送邮件实例
2016/01/10 Python
Python程序运行原理图文解析
2018/02/10 Python
Python(TensorFlow框架)实现手写数字识别系统的方法
2018/05/29 Python
Python实现将多个空格换为一个空格.md的方法
2018/12/20 Python
python 模拟贷款卡号生成规则过程解析
2019/08/30 Python
Python3将数据保存为txt文件的方法
2019/09/12 Python
Python实现序列化及csv文件读取
2020/01/19 Python
Python字符串hashlib加密模块使用案例
2020/03/10 Python
python对execl 处理操作代码
2020/06/22 Python
浅析Python 序列化与反序列化
2020/08/05 Python
css3闪亮进度条效果实现思路及代码
2013/04/17 HTML / CSS
四风存在的原因分析
2014/02/11 职场文书
2014年庆元旦活动方案
2014/02/15 职场文书
毕业论文致谢怎么写
2015/05/14 职场文书
银行客户经理培训心得体会
2016/01/09 职场文书
vue修饰符.capture和.self的区别
2022/04/22 Vue.js
MySQL数据库简介与基本操作
2022/05/30 MySQL
postgresql如何找到表中重复数据的行并删除
2023/05/08 MySQL