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中的startswith和endswith函数使用实例
Aug 25 Python
Python中分数的相关使用教程
Mar 30 Python
python遍历数组的方法小结
Apr 30 Python
Python cookbook(数据结构与算法)实现优先级队列的方法示例
Feb 18 Python
简单谈谈Python的pycurl模块
Apr 07 Python
浅析python中numpy包中的argsort函数的使用
Aug 30 Python
django 类视图的使用方法详解
Jul 24 Python
Tensorflow 1.0之后模型文件、权重数值的读取方式
Feb 12 Python
python为Django项目上的每个应用程序创建不同的自定义404页面(最佳答案)
Mar 09 Python
Django-imagekit的使用详解
Jul 06 Python
8种常用的Python工具
Aug 05 Python
Django基于Models定制Admin后台实现过程解析
Nov 11 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留言本模块主要功能的函数说明(代码可实现)
2013/06/25 PHP
微信支付开发教程(一)微信支付URL配置
2014/05/28 PHP
php常用字符串处理函数实例分析
2014/11/22 PHP
php中memcache 基本操作实例
2015/05/17 PHP
PHP保存Base64图片base64_decode的问题整理
2019/11/04 PHP
两个SUBMIT按钮,如何区分处理
2006/08/22 Javascript
jquery给图片添加鼠标经过时的边框效果
2013/11/12 Javascript
JS案例分享之金额小写转大写
2014/05/15 Javascript
AngularJS入门教程之AngularJS表达式
2016/04/18 Javascript
JQuery控制图片由中心点逐渐放大效果
2016/06/26 Javascript
AngularJS应用开发思维之依赖注入3
2016/08/19 Javascript
关于foreach循环中遇到的问题小结
2017/05/08 Javascript
详解vue项目打包后通过百度的BAE发布到网上的流程
2018/03/05 Javascript
Node.js之readline模块的使用详解
2019/03/25 Javascript
ES6知识点整理之数组解构和字符串解构的应用示例
2019/04/17 Javascript
微信小程序云开发详细教程
2019/05/16 Javascript
jQuery实现的记住帐号密码功能完整示例
2019/08/03 jQuery
vue 实现v-for循环回来的数据动态绑定id
2019/11/07 Javascript
Vue axios与Go Frame后端框架的Options请求跨域问题详解
2020/03/03 Javascript
Python获取暗黑破坏神3战网前1000命位玩家的英雄技能统计
2016/07/04 Python
Python爬虫利用cookie实现模拟登陆实例详解
2017/01/12 Python
Python计算两个日期相差天数的方法示例
2017/05/23 Python
利用python模拟实现POST请求提交图片的方法
2017/07/25 Python
python pandas dataframe 行列选择,切片操作方法
2018/04/10 Python
python pandas 组内排序、单组排序、标号的实例
2018/04/12 Python
python 根据时间来生成唯一的字符串方法
2019/01/14 Python
python中自带的三个装饰器的实现
2019/11/08 Python
使用PyTorch实现MNIST手写体识别代码
2020/01/18 Python
使用 prometheus python 库编写自定义指标的方法(完整代码)
2020/06/29 Python
幼师岗位求职简历的自荐信格式
2013/09/21 职场文书
幼师自荐信
2013/10/26 职场文书
房地产项目策划书
2014/02/05 职场文书
平安校园建设方案
2014/05/02 职场文书
婚礼女方父母答谢词
2015/01/04 职场文书
三傻大闹宝莱坞观后感
2015/06/03 职场文书
Python中requests库的用法详解
2022/06/05 Python