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在Windows和在Linux下调用动态链接库的教程
Aug 18 Python
Windows下为Python安装Matplotlib模块
Nov 06 Python
centos6.7安装python2.7.11的具体方法
Jan 16 Python
python中matplotlib的颜色及线条控制的示例
Mar 16 Python
Python全局变量与局部变量区别及用法分析
Sep 03 Python
python执行精确的小数计算方法
Jan 21 Python
python实现列表的排序方法分享
Jul 01 Python
python中shell执行知识点
May 06 Python
Python连接mysql方法及常用参数
Sep 01 Python
安装不同版本的tensorflow与models方法实现
Feb 20 Python
Django项目在pycharm新建的步骤方法
Mar 02 Python
Python自动化实战之接口请求的实现
May 30 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
法兰绒滤网冲泡
2021/03/03 冲泡冲煮
在PHP3中实现SESSION的功能(三)
2006/10/09 PHP
使用PHP计算两个路径的相对路径
2013/06/14 PHP
js 巧妙去除数组中的重复项
2010/01/25 Javascript
兼容IE和Firefox的javascript获取iframe文档内容的函数
2011/08/15 Javascript
JavaSript中变量的作用域闭包的深入理解
2014/05/12 Javascript
javascript实用方法总结
2015/02/06 Javascript
JS实现仿微博可关闭弹出层效果
2015/09/21 Javascript
JavaScript脚本判断蜘蛛来源的方法
2015/09/22 Javascript
JS将滑动门改为选项卡(需鼠标点击)的实现方法
2015/09/27 Javascript
JavaScript入门教程之引用类型
2016/05/04 Javascript
node.js+captchapng+jsonwebtoken实现登录验证示例
2017/08/17 Javascript
关于js的三种使用方式(行内js、内部js、外部js)的程序代码
2018/05/05 Javascript
Vue中使用 setTimeout() setInterval()函数的问题
2018/09/13 Javascript
vue中进入详情页记住滚动位置的方法(keep-alive)
2018/09/21 Javascript
nodejs读取本地中文json文件出现乱码解决方法
2018/10/10 NodeJs
微信小程序实现商品属性联动选择
2019/02/15 Javascript
element-ui tree结构实现增删改自定义功能代码
2020/08/31 Javascript
vue+springboot+element+vue-resource实现文件上传教程
2020/10/21 Javascript
python实现哈希表
2014/02/07 Python
Python实现Windows上气泡提醒效果的方法
2015/06/03 Python
Java分治归并排序算法实例详解
2017/12/12 Python
Python结合ImageMagick实现多张图片合并为一个pdf文件的方法
2018/04/24 Python
python实现键盘控制鼠标移动
2020/11/27 Python
对Python多线程读写文件加锁的实例详解
2019/01/14 Python
python GUI库图形界面开发之pyinstaller打包python程序为exe安装文件
2020/02/26 Python
全球领先的各类汽车配件零售商:Advance Auto Parts
2016/08/26 全球购物
美国最大的城市服装和运动鞋零售商:Jimmy Jazz
2016/11/19 全球购物
Michael Kors美国官网:美式奢侈生活风格的代表
2016/11/25 全球购物
美国知名生活购物网站:Goop
2017/11/03 全球购物
某公司C#程序员面试题笔试题
2014/05/26 面试题
高三自我鉴定
2013/10/23 职场文书
给交警的表扬信
2014/01/12 职场文书
《第一次抱母亲》教学反思
2014/04/16 职场文书
2015年社区消防安全工作总结
2015/10/14 职场文书
JavaScript实现栈结构详细过程
2021/12/06 Javascript