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爬虫模拟登录带验证码网站
Jan 22 Python
python爬取cnvd漏洞库信息的实例
Feb 14 Python
python3实现钉钉消息推送的方法示例
Mar 14 Python
Python实现的读取文件内容并写入其他文件操作示例
Apr 09 Python
python getpass实现密文实例详解
Sep 24 Python
基于python2.7实现图形密码生成器的实例代码
Nov 05 Python
Python倒排索引之查找包含某主题或单词的文件
Nov 13 Python
PyCharm+Pipenv虚拟环境开发和依赖管理的教程详解
Apr 16 Python
Pandas实现一列数据分隔为两列
May 18 Python
工程师必须了解的LRU缓存淘汰算法以及python实现过程
Oct 15 Python
Pandas中DataFrame交换列顺序的方法实现
Dec 14 Python
Python中glob库实现文件名的匹配
Jun 18 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
ASP和PHP实现生成网站快捷方式并下载到桌面的方法
2014/05/08 PHP
PHP实现基于PDO扩展连接PostgreSQL对象关系数据库示例
2018/03/31 PHP
laravel批量生成假数据的方法
2019/10/09 PHP
学习YUI.Ext第五日--做拖放Darg&Drop
2007/03/10 Javascript
基于Jquery的跨域传输数据(JSONP)
2011/03/10 Javascript
ASP.NET jQuery 实例15 通过控件CustomValidator验证CheckBoxList
2012/02/03 Javascript
javaScript arguments 对象使用介绍
2013/10/18 Javascript
jQuery中的siblings()是什么意思(推荐)
2016/12/29 Javascript
vuejs如何配置less
2017/04/25 Javascript
Angular2使用jQuery的方法教程
2017/05/28 jQuery
Vue.js2.0中的变化小结
2017/10/24 Javascript
Node.js使用Express.Router的方法
2017/11/14 Javascript
浅谈VUE防抖与节流的最佳解决方案(函数式组件)
2019/05/22 Javascript
vue+element-ui表格封装tag标签使用插槽
2020/06/18 Javascript
微信小程序之导航滑块视图容器功能的实现代码(简单两步)
2020/06/19 Javascript
JavaScript 防盗链的原理以及破解方法
2020/12/29 Javascript
Python字符串的encode与decode研究心得乱码问题解决方法
2009/03/23 Python
Python cookbook(数据结构与算法)在字典中将键映射到多个值上的方法
2018/02/18 Python
django 修改server端口号的方法
2018/05/14 Python
python计算两个地址之间的距离方法
2018/06/09 Python
python得到单词模式的示例
2018/10/15 Python
PyCharm+PySpark远程调试的环境配置的方法
2018/11/29 Python
Python使用pyexecjs代码案例解析
2020/07/13 Python
Python实现异步IO的示例
2020/11/05 Python
Python join()函数原理及使用方法
2020/11/14 Python
萌新的HTML5 入门指南
2020/11/06 HTML / CSS
客服工作职责
2013/12/11 职场文书
手工社团活动方案
2014/02/17 职场文书
宪法宣传周工作方案
2014/05/26 职场文书
暑期社会实践证明书
2014/11/17 职场文书
中英文求职信范文
2015/03/19 职场文书
毕业生入职感言
2015/07/31 职场文书
优秀党员先进事迹材料2016
2016/02/29 职场文书
广告策划的实习心得体会总结!
2019/07/22 职场文书
那些美到让人窒息的诗句,值得你收藏!
2019/08/20 职场文书
排查MySQL生产环境索引没有效果
2022/04/11 MySQL