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 random模块(获取随机数)常用方法和使用例子
May 13 Python
Python使用Flask框架获取当前查询参数的方法
Mar 21 Python
基于Python实现一个简单的银行转账操作
Mar 06 Python
python中获得当前目录和上级目录的实现方法
Oct 12 Python
利用Python在一个文件的头部插入数据的实例
May 02 Python
对Python中list的倒序索引和切片实例讲解
Nov 15 Python
Python3.4学习笔记之列表、数组操作示例
Mar 01 Python
Python 函数返回值的示例代码
Mar 11 Python
详解10个可以快速用Python进行数据分析的小技巧
Jun 24 Python
Django 自动生成api接口文档教程
Nov 19 Python
使用keras内置的模型进行图片预测实例
Jun 17 Python
Python闭包装饰器使用方法汇总
Jun 29 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
Zerg基本策略
2020/03/14 星际争霸
php遍历、读取文件夹中图片并分页显示图片的方法
2016/11/15 PHP
Laravel框架创建路由的方法详解
2019/09/04 PHP
js修改table中Td的值(定义td的双击事件)
2013/01/10 Javascript
JS保存、读取、换行、转Json报错处理方法
2013/06/14 Javascript
整理Javascript函数学习笔记
2015/12/01 Javascript
Jqgrid之强大的表格插件应用
2015/12/02 Javascript
jQuery组件easyui对话框实现代码
2016/08/25 Javascript
js实现返回顶部效果
2017/03/10 Javascript
SpringMVC简单整合Angular2的示例
2017/07/31 Javascript
详解vue+vuex+koa2开发环境搭建及示例开发
2018/01/22 Javascript
Vue引入jquery实现平滑滚动到指定位置
2018/05/09 jQuery
jQuery使用each遍历循环的方法
2018/09/19 jQuery
模块化react-router配置方法详解
2019/06/03 Javascript
[16:19]教你分分钟做大人——风暴之灵
2015/03/11 DOTA
Python中获取网页状态码的两个方法
2014/11/03 Python
Python中关于使用模块的基础知识
2015/05/24 Python
Python实现PS滤镜的万花筒效果示例
2018/01/23 Python
python多任务及返回值的处理方法
2019/01/22 Python
python程序控制NAO机器人行走
2019/04/29 Python
Django中如何使用sass的方法步骤
2019/07/09 Python
python实现统计代码行数的小工具
2019/09/19 Python
python输入错误后删除的方法
2019/10/12 Python
python 解决print数组/矩阵无法完整输出的问题
2020/02/19 Python
如何查看Django ORM执行的SQL语句的实现
2020/04/20 Python
记一次django内存异常排查及解决方法
2020/08/07 Python
美国休闲服装品牌:Express
2016/09/24 全球购物
大学生四年生活自我鉴定
2013/11/21 职场文书
个人收入证明范本
2014/01/12 职场文书
标准的毕业生自荐信
2014/04/20 职场文书
新教师培训方案
2014/06/08 职场文书
2015入党自传书范文
2015/06/26 职场文书
2016年清明节红领巾广播稿
2015/12/17 职场文书
2019年让高校“心动”的自荐信
2019/03/25 职场文书
如何解决.cuda()加载用时很长的问题
2021/05/24 Python
vue router 动态路由清除方式
2022/05/25 Vue.js