Django 用户认证Auth组件的使用


Posted in Python onNovember 30, 2020

Django 用户认证(Auth)组件

Django 用户认证(Auth)组件一般用在用户的登录注册上,用于判断当前的用户是否合法,并跳转到登陆成功或失败页面。

Django 用户认证(Auth)组件需要导入 auth 模块:

# 认证模块
from django.contrib import auth

# 对应数据库
from django.contrib.auth.models import User

返回值是用户对象。

创建用户对象的三种方法:

  • create():创建一个普通用户,密码是明文的。
  • create_user():创建一个普通用户,密码是密文的。
  • create_superuser():创建一个超级用户,密码是密文的,要多传一个邮箱 email 参数。

参数:

username: 用户名。

password:密码。

email:邮箱 (create_superuser 方法要多加一个 email)。

from django.contrib.auth.models import User 
User.objects.create(username='runboo',password='123')

Django 用户认证Auth组件的使用

from django.contrib.auth.models import User 
User.objects.create(username='runbooo',password='123')

Django 用户认证Auth组件的使用

from django.contrib.auth.models import User 
User.objects.create(username='runboooo',password='123',email='runboo@163.com')

Django 用户认证Auth组件的使用

验证用户的用户名和密码使用 authenticate() 方法,从需要 auth_user 表中过滤出用户对象。

使用前要导入:

from django.contrib import auth

参数:

  • username:用户名
  • password:密码

**返回值:**如果验证成功,就返回用户对象,反之,返回 None。

实例

**def** login(request):
 **if** request.method == "GET":
  **return** render(request, "login.html")
 username = request.POST.get("username")
 password = request.POST.get("pwd")
 valid_num = request.POST.get("valid_num")
 keep_str = request.session.get("keep_str")
 **if** keep_str.upper() == valid_num.upper():
  user_obj = auth.authenticate(username=username, password=password)
  **print**(user_obj.username)

Django 用户认证Auth组件的使用

给验证成功的用户加 session,将 request.user 赋值为用户对象。

登陆使用 login() 方法。

使用前要导入:

from django.contrib import auth

参数:

request:用户对象

返回值:None

实例

**def** login(request):
 **if** request.method == "GET":
  **return** render(request, "login.html")
 username = request.POST.get("username")
 password = request.POST.get("pwd")
 valid_num = request.POST.get("valid_num")
 keep_str = request.session.get("keep_str")
 **if** keep_str.upper() == valid_num.upper():
  user_obj = auth.authenticate(username=username, password=password)
  **print**(user_obj.username)
  **if** **not** user_obj:
   **return** redirect("/login/")
  **else**:

​   auth.login(request, user_obj)
​   path = request.GET.get("next") **or** "/index/"
​   **print**(path)
​   **return** redirect(path)
 **else**:
​  **return** redirect("/login/")

Django 用户认证Auth组件的使用

注销用户使用 logout() 方法,需要清空 session 信息,将 request.user 赋值为匿名用户。

使用前要导入:

from django.contrib import auth

参数:

request:用户对象

返回值:None

实例

def logout(request):
ppp = auth.logout(request)
print(ppp) # None
return redirect("/login/")

设置装饰器,给需要登录成功后才能访问的页面统一加装饰器。

使用前要导入:

from django.contrib.auth.decorators import login_required

实例

**from** django.contrib.auth.decorators **import** login_required @login_required
**def** index(request):
 **return** HttpResponse("index页面。。。")

设置从哪个页面访问,登录成功后就返回哪个页面。

strong>解析:

django 在用户访问页面时,如果用户是未登录的状态,就给用户返回登录页面。

此时,该登录页面的 URL 后面有参数:next=用户访问的页面的 URL。

因此,设置在用户登录成功后重定向的 URL 为 next 参数的值。

但是,若用户一开始就输入登录页面 logi,request.GET.get(“next”) 就取不到值,所以在后面加 or,可以设置自定义返回的页面。

实例

\# 如果直接输入 login、get() 就取不到值,path 可以自定义设置返回的页面
path = request.GET.get("next") **or** "/index/"
**return** redirect(path)

Django 用户认证Auth组件的使用

到此这篇关于Django 用户认证Auth组件的使用的文章就介绍到这了,更多相关Django 用户认证Auth组件内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python通过pil模块将raw图片转换成png图片的方法
Mar 16 Python
Ruby使用eventmachine为HTTP服务器添加文件下载功能
Apr 20 Python
Python2和Python3中print的用法示例总结
Oct 25 Python
pycharm+django创建一个搜索网页实例代码
Jan 24 Python
Python中将dataframe转换为字典的实例
Apr 13 Python
解决Python 爬虫URL中存在中文或特殊符号无法请求的问题
May 11 Python
python 获取utc时间转化为本地时间的方法
Dec 31 Python
对python 自定义协议的方法详解
Feb 13 Python
详解python数据结构和算法
Apr 18 Python
python实现批量视频分帧、保存视频帧
May 31 Python
基于Python制作一副扑克牌过程详解
Oct 19 Python
python中二分查找法的实现方法
Dec 06 Python
python tqdm库的使用
Nov 30 #Python
Python+unittest+DDT实现数据驱动测试
Nov 30 #Python
Python logging自定义字段输出及打印颜色
Nov 30 #Python
详解Python中string模块除去Str还剩下什么
Nov 30 #Python
使用django自带的user做外键的方法
Nov 30 #Python
python 实现简易的记事本
Nov 30 #Python
详解pycharm自动import所需的库的操作方法
Nov 30 #Python
You might like
php正则
2006/07/07 PHP
php printf输出格式使用说明
2010/12/05 PHP
奇怪的PHP引用效率问题分析
2012/03/23 PHP
微信自定义分享php代码分析
2016/11/24 PHP
PHP中ltrim()函数的用法与实例讲解
2019/03/28 PHP
setTimeout的延时为0时多个浏览器的区别
2012/05/23 Javascript
深入理解javaScript中的事件驱动
2013/05/21 Javascript
浅析jquery ajax异步调用方法中不能给全局变量赋值的原因及解决方法
2014/01/10 Javascript
js 获取时间间隔实现代码
2014/05/12 Javascript
jQuery绑定事件不执行但alert后可以正常执行
2014/06/03 Javascript
js日期范围初始化得到前一个月日期的方法
2015/05/05 Javascript
在js中实现邮箱格式的验证方法(推荐)
2016/10/24 Javascript
PHP捕捉异常中断的方法
2016/10/24 Javascript
jquery获取table指定行和列的数据方法(当前选中行、列)
2016/11/07 Javascript
微信小程序 网络API Websocket详解
2016/11/09 Javascript
jQuery插件Echarts实现的双轴图效果示例【附demo源码下载】
2017/03/04 Javascript
原生Aajax 和jQuery Ajax 写法个人总结
2017/03/24 jQuery
Bootstrap 模态对话框只加载一次 remote 数据的完美解决办法
2017/07/09 Javascript
微信小程序实现折叠展开效果
2018/07/19 Javascript
JS实现获取毫秒值及转换成年月日时分秒的方法
2018/08/15 Javascript
利用不到200行代码写一款属于你自己的js类库
2019/07/08 Javascript
javascript 对象 与 prototype 原型用法实例分析
2019/11/11 Javascript
[01:35:13]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第一场 1月18日
2021/03/11 DOTA
python关闭windows进程的方法
2015/04/18 Python
用tensorflow搭建CNN的方法
2018/03/05 Python
Python基于xlrd模块操作Excel的方法示例
2018/06/21 Python
设置python3为默认python的方法
2018/10/31 Python
python pygame实现方向键控制小球
2019/05/17 Python
VELTRA台湾:世界自由行专家
2017/08/15 全球购物
加拿大时尚床上用品零售商:QE Home | Quilts Etc
2018/01/22 全球购物
行政助理的职责
2013/11/14 职场文书
市场开发与营销专业求职信
2013/12/31 职场文书
2014年高中生自我评价范文
2014/09/26 职场文书
oracle连接ODBC sqlserver数据源的详细步骤
2021/07/25 Oracle
Android开发之WECHAT微信小程序路由跳转的两种形式
2022/04/12 Java/Android
详细介绍Java中的CyclicBarrier
2022/04/13 Java/Android