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实现的一个p2p文件传输实例
Jun 04 Python
有关wxpython pyqt内存占用问题分析
Jun 09 Python
python threading模块操作多线程介绍
Apr 08 Python
Python入门_学会创建并调用函数的方法
May 16 Python
Python算法之图的遍历
Nov 16 Python
Python 错误和异常代码详解
Jan 29 Python
Python 读取某个目录下所有的文件实例
Jun 23 Python
Python根据文件名批量转移图片的方法
Oct 21 Python
python 获取图片分辨率的方法
Jan 08 Python
Python 利用pydub库操作音频文件的方法
Jan 09 Python
Python可变和不可变、类的私有属性实例分析
May 31 Python
Python基础详解之描述符
Apr 28 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 flv视频时间获取函数
2010/06/29 PHP
一些php项目中比较通用的php自建函数的详解
2013/06/06 PHP
ThinkPHP模板判断输出Present标签用法详解
2014/06/30 PHP
PHP中in_array函数使用的问题与解决办法
2016/09/11 PHP
js中根据字数截取字符串,不能截断url
2012/01/12 Javascript
JQuery中attr方法和removeAttr方法用法实例
2015/05/18 Javascript
JQuery boxy插件在IE中边角图片不显示问题的解决
2015/05/20 Javascript
JavaScript焦点事件、鼠标事件和滚轮事件使用详解
2016/01/15 Javascript
Node.js的MongoDB驱动Mongoose基本使用教程
2016/03/01 Javascript
node.js Sequelize实现单实例字段或批量自增、自减
2016/12/08 Javascript
Vue响应式添加、修改数组和对象的值
2017/03/20 Javascript
解决OneThink中无法异步提交kindeditor文本框中修改后的内容方法
2017/05/05 Javascript
js学习总结之dom2级事件基础知识详解
2017/07/27 Javascript
import与export在node.js中的使用详解
2017/09/28 Javascript
Nginx 配置多站点vhost 的方法
2018/01/07 Javascript
vuejs 制作背景淡入淡出切换动画的实例
2018/09/01 Javascript
你不知道的Vue技巧之--开发一个可以通过方法调用的组件(推荐)
2019/04/15 Javascript
微信小程序 腾讯地图显示偏差问题解决
2019/07/27 Javascript
使用Vue实现调用接口加载页面初始数据
2019/10/28 Javascript
JS操作字符串转数字的常见方法示例
2019/10/29 Javascript
Python 字典dict使用介绍
2014/11/30 Python
浅谈Python数据类型之间的转换
2016/06/08 Python
使用Python通过win32 COM打开Excel并添加Sheet的方法
2018/05/02 Python
Pandas读写CSV文件的方法示例
2019/03/27 Python
django项目中使用手机号登录的实例代码
2019/08/15 Python
用python生成与调用cntk模型代码演示方法
2019/08/26 Python
python mqtt 客户端的实现代码实例
2019/09/25 Python
python 统计文件中的字符串数目示例
2019/12/24 Python
Python模拟伯努利试验和二项分布代码实例
2020/05/27 Python
奥地利顶级内衣丝袜品牌英国站:Wolford英国
2016/08/29 全球购物
Ego Shoes官网:英国时髦鞋类品牌
2020/10/19 全球购物
十八大闭幕感言
2014/01/22 职场文书
优秀毕业生求职信
2014/06/05 职场文书
企业环保标语
2014/06/10 职场文书
大学生活感想
2015/08/10 职场文书
Win10 heic文件怎么打开 ? Win10 heic文件打开教程
2022/04/06 数码科技