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的爬虫框架Scrapy的结构与运作流程
Jan 20 Python
Python实现excel转sqlite的方法
Jul 17 Python
Python基于matplotlib实现绘制三维图形功能示例
Jan 18 Python
Python实现读取SQLServer数据并插入到MongoDB数据库的方法示例
Jun 09 Python
python获取指定字符串中重复模式最高的字符串方法
Jun 29 Python
python numpy 一维数组转变为多维数组的实例
Jul 02 Python
解决Python plt.savefig 保存图片时一片空白的问题
Jan 10 Python
pandas去重复行并分类汇总的实现方法
Jan 29 Python
Python爬虫beautifulsoup4常用的解析方法总结
Feb 25 Python
PyCharm使用Docker镜像搭建Python开发环境
Dec 26 Python
vue学习笔记之动态组件和v-once指令简单示例
Feb 29 Python
python Django 反向访问器的外键冲突解决
May 20 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下几个常用的去空、分组、调试数组函数
2009/02/22 PHP
php制作简单模版引擎
2016/04/07 PHP
php函数mkdir实现递归创建层级目录
2016/10/27 PHP
PHP+jQuery实现滚屏无刷新动态加载数据功能详解
2017/05/04 PHP
PHP常见过waf webshell以及最简单的检测方法
2019/05/21 PHP
javascript字典探测用户名工具
2006/10/05 Javascript
JS对URL字符串进行编码/解码分析
2008/10/25 Javascript
jQuery入门问答 整理的几个常见的初学者问题
2010/02/22 Javascript
Javascript中的this绑定介绍
2011/09/22 Javascript
IE6-8中Date不支持toISOString的修复方法
2014/05/04 Javascript
js 设置缓存及获取设置的缓存
2014/05/08 Javascript
一个JavaScript用逗号分割字符串实例
2014/09/22 Javascript
jQuery中closest()函数用法实例
2015/01/07 Javascript
JavaScript里实用的原生API汇总
2015/05/14 Javascript
省市区三级联动下拉框菜单javascript版
2015/08/11 Javascript
多种JQuery循环滚动文字图片效果代码
2020/06/23 Javascript
JS组件Bootstrap Table使用实例分享
2016/05/30 Javascript
Vue 固定头 固定列 点击表头可排序的表格组件
2016/11/25 Javascript
js实现密码强度检验
2017/01/15 Javascript
Node.js 进程平滑离场剖析小结
2019/01/24 Javascript
vue浏览器返回监听的具体步骤
2021/02/03 Vue.js
[02:16]深扒TI7聊天轮盘语音出处2
2017/05/11 DOTA
python统计文本字符串里单词出现频率的方法
2015/05/26 Python
Python算法的时间复杂度和空间复杂度(实例解析)
2019/11/19 Python
Python zip函数打包元素实例解析
2019/12/11 Python
python七种方法判断字符串是否包含子串
2020/08/18 Python
美国网上鞋子零售商:Dr. Scholl’s Shoes
2017/11/17 全球购物
北大青鸟学生求职信
2013/09/24 职场文书
电脑租赁公司创业计划书
2014/01/08 职场文书
《梅兰芳学艺》教学反思
2014/02/24 职场文书
意向书范文
2014/03/31 职场文书
和谐社区口号
2014/06/19 职场文书
建设幸福中国演讲稿
2014/09/11 职场文书
2014年党员整改措施范文
2014/09/21 职场文书
李强优秀员工观后感
2015/06/16 职场文书
欠款证明
2015/06/24 职场文书