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 文件和路径操作函数小结
Nov 23 Python
将Django框架和遗留的Web应用集成的方法
Jul 24 Python
Python利用Beautiful Soup模块搜索内容详解
Mar 29 Python
python中利用xml.dom模块解析xml的方法教程
May 24 Python
Python 3中print函数的使用方法总结
Aug 08 Python
python2.7到3.x迁移指南
Feb 01 Python
python使用筛选法计算小于给定数字的所有素数
Mar 19 Python
Python Lambda函数使用总结详解
Dec 11 Python
Python for循环搭配else常见问题解决
Feb 11 Python
Python使用cn2an实现中文数字与阿拉伯数字的相互转换
Mar 02 Python
selenium.webdriver中add_argument方法常用参数表
Apr 08 Python
pytorch--之halfTensor的使用详解
May 24 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
WordPress过滤垃圾评论的几种主要方法小结
2016/07/11 PHP
Yii中CGridView禁止列排序的设置方法
2016/07/12 PHP
PHP面试常用算法(推荐)
2016/07/22 PHP
php7 错误处理机制修改实例分析
2020/05/25 PHP
初学Jquery插件制作 在SageCRM的查询屏幕隐藏部分行的功能
2011/12/26 Javascript
Web开发之JavaScript
2012/03/29 Javascript
使用变量动态设置js的属性名
2014/10/19 Javascript
jQuery实现ctrl+enter(回车)提交表单
2015/10/19 Javascript
js 右侧浮动层效果实现代码(跟随滚动)
2015/11/22 Javascript
基于javascript实现根据身份证号码识别性别和年龄
2016/01/22 Javascript
javascript创建对象、对象继承的实用方式详解
2016/03/08 Javascript
JS模拟bootstrap下拉菜单效果实例
2016/06/17 Javascript
jQuery实现checkbox列表的全选、反选功能
2016/11/24 Javascript
jQuery实现二维码扫描功能
2017/01/09 Javascript
ajax实现动态下拉框示例
2017/01/10 Javascript
JavaScript实现大图轮播效果
2017/01/11 Javascript
js 数据存储和DOM编程
2017/02/09 Javascript
详谈jQuery中的一些正则匹配表达式
2017/03/08 Javascript
nuxt框架中路由鉴权之Koa和Session的用法
2018/05/09 Javascript
layui对工具条进行选择性的显示方法
2019/09/19 Javascript
Layui带搜索的下拉框的使用以及动态数据绑定方法
2019/09/28 Javascript
[05:31]DOTA2上海特级锦标赛主赛事第三日RECAP
2016/03/05 DOTA
Python Web框架Tornado运行和部署
2020/10/19 Python
python3.6环境安装+pip环境配置教程图文详解
2019/06/20 Python
CSS3 毛玻璃效果
2019/08/14 HTML / CSS
应届中专生自荐书范文
2014/02/13 职场文书
联谊活动总结
2014/08/28 职场文书
校园安全广播稿范文
2014/09/25 职场文书
党员教师群众路线对照检查材料思想汇报
2014/09/29 职场文书
学校政风行风整改方案
2014/10/25 职场文书
关于学习的决心书
2015/02/05 职场文书
小学生2015教师节演讲稿
2015/03/19 职场文书
2015迎新晚会开场白
2015/05/29 职场文书
导游词之峨眉山
2019/12/16 职场文书
python实现会员信息管理系统(List)
2022/03/18 Python
go goth封装第三方认证库示例详解
2022/08/14 Golang