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实现数通设备端口使用情况监控实例
Jul 15 Python
Python使用BeautifulSoup库解析HTML基本使用教程
Mar 31 Python
Python自定义线程类简单示例
Mar 23 Python
利用Python读取txt文档的方法讲解
Jun 23 Python
Python简单获取二维数组行列数的方法示例
Dec 21 Python
django 实现编写控制登录和访问权限控制的中间件方法
Jan 15 Python
用python 实现在不确定行数情况下多行输入方法
Jan 28 Python
Python变量、数据类型、数据类型转换相关函数用法实例详解
Jan 09 Python
Django media static外部访问Django中的图片设置教程
Apr 07 Python
django 数据库 get_or_create函数返回值是tuple的问题
May 15 Python
Python实现哲学家就餐问题实例代码
Nov 09 Python
详解运行Python的神器Jupyter Notebook
Jun 03 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
关于更改Zend Studio/Eclipse代码风格主题的介绍
2013/06/23 PHP
php-perl哈希算法实现(times33哈希算法)
2013/12/30 PHP
PHP高手需要要掌握的知识点
2014/08/21 PHP
PHP5.5安装PHPRedis扩展及连接测试方法
2017/01/22 PHP
laravel框架中视图的基本使用方法分析
2019/11/23 PHP
TextArea 控件的最大长度问题(js json)
2009/12/16 Javascript
jQuery 获取兄弟元素的几种不错方法
2014/05/23 Javascript
javascript数字验证的实例代码(推荐)
2016/08/20 Javascript
使用微信小程序开发前端【快速入门】
2016/12/05 Javascript
javascript使用递归算法求两个数字组合功能示例
2017/01/03 Javascript
深入理解JavaScript中的预解析
2017/01/04 Javascript
详解Vue使用 vue-cli 搭建项目
2017/04/20 Javascript
浅谈node中的exports与module.exports的关系
2017/08/01 Javascript
基于jQuery实现无缝轮播与左右点击效果
2018/05/13 jQuery
JavaScript折半查找(二分查找)算法原理与实现方法示例
2018/08/06 Javascript
vue.js提交按钮时进行简单的if判断表达式详解
2018/08/08 Javascript
vue项目部署到Apache服务器中遇到的问题解决
2018/08/24 Javascript
详解如何使用微信小程序云函数发送短信验证码
2019/03/13 Javascript
[00:32]2018DOTA2亚洲邀请赛VGJ.T出场
2018/04/03 DOTA
详解python3中tkinter知识点
2018/06/21 Python
计算机二级python学习教程(3) python语言基本数据类型
2019/05/16 Python
Python使用LDAP做用户认证的方法
2019/06/20 Python
通过PHP与Python代码对比的语法差异详解
2019/07/10 Python
关于pytorch中全连接神经网络搭建两种模式详解
2020/01/14 Python
如何在python中执行另一个py文件
2020/04/30 Python
python3.7中安装paddleocr及paddlepaddle包的多种方法
2020/11/27 Python
全面解析CSS Media媒体查询使用操作(推荐)
2017/08/15 HTML / CSS
CSS3实现DIV圆角效果完整代码
2012/10/10 HTML / CSS
Jacadi Paris美国官方网站:法国童装品牌
2017/10/15 全球购物
物控部经理职务说明书
2014/02/25 职场文书
事假请假条范文
2014/04/11 职场文书
校运动会广播稿300字
2014/10/07 职场文书
解除施工合同协议书
2014/10/17 职场文书
领导班子整改方案和个人整改措施
2014/10/25 职场文书
幼儿园工作总结2015
2015/04/01 职场文书
详解Mysql和Oracle之间的误区
2021/05/18 MySQL