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 相关文章推荐
Python2.5/2.6实用教程 入门基础篇
Nov 29 Python
python批量实现Word文件转换为PDF文件
Mar 15 Python
python pands实现execl转csv 并修改csv指定列的方法
Dec 12 Python
Python3.5 Pandas模块缺失值处理和层次索引实例详解
Apr 23 Python
使用python脚本自动创建pip.ini配置文件代码实例
Sep 20 Python
关于Numpy数据类型对象(dtype)使用详解
Nov 27 Python
使用Python打造一款间谍程序的流程分析
Feb 21 Python
jupyter notebook 多行输出实例
Apr 09 Python
Python连接mysql数据库及简单增删改查操作示例代码
Aug 03 Python
JupyterNotebook 输出窗口的显示效果调整实现
Sep 22 Python
Python如何使用vars返回对象的属性列表
Oct 17 Python
Python爬虫爬取微博热搜保存为 Markdown 文件的源码
Feb 22 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写的serv-u的web申请账号的程序
2006/10/09 PHP
PHP+iframe图片上传实现即时刷新效果
2016/11/18 PHP
用jquery存取照片的具体实现方法
2013/06/30 Javascript
用JS将搜索的关键字高亮显示实现代码
2013/11/08 Javascript
Jquery中&quot;$(document).ready(function(){ })&quot;函数的使用详解
2013/12/30 Javascript
Javascript 拖拽雏形(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
jquery+正则实现统一的表单验证
2015/09/20 Javascript
基于jQuery实现点击最后一行实现行自增效果的表格
2016/01/12 Javascript
JS实现类似51job上的地区选择效果示例
2016/11/17 Javascript
折叠菜单及选择器的运用
2017/02/03 Javascript
详解Javascript百度地图接口开发文档中的类和方法
2017/02/07 Javascript
Vue.js上传图片到阿里云OSS存储的方法示例
2018/12/13 Javascript
layer弹出层自定义提交取消按钮的例子
2019/09/10 Javascript
JQuery常用选择器功能与用法实例分析
2019/12/23 jQuery
node.js中npm包管理工具用法分析
2020/02/14 Javascript
如何在 Vue 表单中处理图片
2021/01/26 Vue.js
Python 3.x读写csv文件中数字的方法示例
2017/08/29 Python
python 随机数使用方法,推导以及字符串,双色球小程序实例
2017/09/12 Python
Python全排列操作实例分析
2018/07/24 Python
Python中函数参数调用方式分析
2018/08/09 Python
python 解压pkl文件的方法
2018/10/25 Python
python里运用私有属性和方法总结
2019/07/08 Python
Python代码块及缓存机制原理详解
2019/12/13 Python
python读写数据读写csv文件(pandas用法)
2020/12/14 Python
CSS 3.0 结合video视频实现的创意开幕效果
2020/06/01 HTML / CSS
番木瓜健康和保健产品第一大制造商:Herbal Papaya
2017/04/25 全球购物
美国女士时尚珠宝及配饰购物网站:Icing
2018/07/02 全球购物
波兰在线运动商店:YesSport
2020/07/23 全球购物
数百万免费的图形资源:Freepik
2020/09/21 全球购物
师范生自荐信
2013/10/27 职场文书
物流仓管员岗位职责
2013/12/04 职场文书
志愿者活动总结范文
2014/04/26 职场文书
党员群众路线对照检查材料
2014/08/31 职场文书
乡镇安全生产月活动总结
2015/05/08 职场文书
优秀创业计划书分享
2019/07/19 职场文书
Python 如何解决稀疏矩阵运算
2021/05/26 Python