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中使用smtplib和email模块发送邮件实例
Apr 22 Python
python学习笔记:字典的使用示例详解
Jun 13 Python
pygame学习笔记(6):完成一个简单的游戏
Apr 15 Python
在Python中使用SQLite的简单教程
Apr 29 Python
浅谈Python中函数的参数传递
Jun 21 Python
Python 装饰器深入理解
Mar 16 Python
Python文件和流(实例讲解)
Sep 12 Python
对Python 3.2 迭代器的next函数实例讲解
Oct 18 Python
python 图像处理画一个正弦函数代码实例
Sep 10 Python
python集合常见运算案例解析
Oct 17 Python
Python3与fastdfs分布式文件系统如何实现交互
Jun 23 Python
python中__slots__节约内存的具体做法
Jul 04 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
Thinkphp模板标签if和eq的区别和比较实例分析
2015/07/01 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
PHP日志LOG类定义与用法示例
2018/09/06 PHP
jquery如何把参数列严格转换成数组实现思路
2013/04/01 Javascript
JS+DIV实现鼠标划过切换层效果的实例代码
2013/11/26 Javascript
Javascript小技巧之生成html元素
2014/05/15 Javascript
JavaScript的Backbone.js框架入门学习指引
2016/05/07 Javascript
微信公众号  提示:Unauthorized API function 问题解决方法
2016/12/05 Javascript
详解webpack4多入口、多页面项目构建案例
2018/05/25 Javascript
微信小程序在地图选择地址并返回经纬度简单示例
2018/12/03 Javascript
详解微信小程序之scroll-view的flex布局问题
2019/01/16 Javascript
如何阻止移动端浏览器点击图片浏览
2020/08/29 Javascript
python3解析库BeautifulSoup4的安装配置与基本用法
2018/06/26 Python
解决PyCharm同目录下导入模块会报错的问题
2018/10/13 Python
Pycharm保存不能自动同步到远程服务器的解决方法
2019/06/27 Python
python中bs4.BeautifulSoup的基本用法
2019/07/27 Python
Python检查 云备份进程是否正常运行代码实例
2019/08/22 Python
Python实现微信中找回好友、群聊用户撤回的消息功能示例
2019/08/23 Python
Python使用matplotlib绘制Logistic曲线操作示例
2019/11/28 Python
tensorflow之并行读入数据详解
2020/02/05 Python
Pycharm中配置远程Docker运行环境的教程图解
2020/06/11 Python
Python进行特征提取的示例代码
2020/10/15 Python
Europcar比利时:租车
2019/08/26 全球购物
印度手工编织服装和家居用品商店:Fabindi
2019/10/07 全球购物
电脑销售顾问自荐信
2014/01/29 职场文书
九年级语文教学反思
2014/02/04 职场文书
马智宇结婚主持词
2014/04/01 职场文书
领导班子四风对照检查材料
2014/09/23 职场文书
公司承诺函范文
2015/01/21 职场文书
公司财务部岗位职责
2015/04/14 职场文书
《当代神农氏》教学反思
2016/02/23 职场文书
Python+Appium实现自动抢微信红包
2021/05/21 Python
MySQL实战记录之如何快速定位慢SQL
2022/03/23 MySQL
Spring Boot项目传参校验的最佳实践指南
2022/04/05 Java/Android
Python语法学习之进程的创建与常用方法详解
2022/04/08 Python
Redis特殊数据类型bitmap位图
2022/06/01 Redis