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使用在线API查询IP对应的地理位置信息实例
Jun 01 Python
在Python的循环体中使用else语句的方法
Mar 30 Python
python对数组进行反转的方法
May 20 Python
Python程序中的观察者模式结构编写示例
May 27 Python
利用python numpy+matplotlib绘制股票k线图的方法
Jun 26 Python
python实现键盘输入的实操方法
Jul 16 Python
使用Python给头像戴上圣诞帽的图像操作过程解析
Sep 20 Python
Python箱型图处理离群点的例子
Dec 09 Python
python ffmpeg任意提取视频帧的方法
Feb 21 Python
Django+python服务器部署与环境部署教程详解
Mar 30 Python
Keras自定义IOU方式
Jun 10 Python
Python自动化爬取天眼查数据的实现
Jun 15 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日期转时间戳,指定日期转换成时间戳
2012/07/17 PHP
浅谈php安全性需要注意的几点事项
2014/07/17 PHP
thinkphp3.2.2实现生成多张缩略图的方法
2014/12/19 PHP
thinkPHP简单遍历数组方法分析
2016/05/16 PHP
php简单中奖算法(实例)
2017/08/15 PHP
PHP实现模拟http请求的方法分析
2017/12/20 PHP
自动设置iframe大小的jQuery代码
2013/09/11 Javascript
原生javascript实现获取指定元素下所有后代元素的方法
2014/10/28 Javascript
JavaScript使用replace函数替换字符串的方法
2015/04/06 Javascript
jquery实现不包含当前项的选择器实例
2015/06/25 Javascript
jQuery遍历DOM节点操作之filter()方法详解
2016/04/14 Javascript
jquery过滤特殊字符',防sql注入的实现方法
2016/08/17 Javascript
详解js前端代码异常监控
2017/01/11 Javascript
详解在Vue中如何使用axios跨域访问数据
2017/07/07 Javascript
关于Ajax的原理以及代码封装详解
2017/09/08 Javascript
微信小程序实现全局搜索代码高亮的示例
2018/03/30 Javascript
微信小程序项目总结之点赞 删除列表 分享功能
2018/06/25 Javascript
使用bootstrap实现下拉框搜索功能的实例讲解
2018/08/10 Javascript
vue-vuex中使用commit提交mutation来修改state的方法详解
2018/09/16 Javascript
详解用Webpack与Babel配置ES6开发环境
2019/03/12 Javascript
原生js实现each方法实例代码详解
2019/05/27 Javascript
vue+echarts实现动态折线图的方法与注意
2020/09/01 Javascript
Python基于回溯法子集树模板解决数字组合问题实例
2017/09/02 Python
对numpy中的where方法嵌套使用详解
2018/10/31 Python
在python中只选取列表中某一纵列的方法
2018/11/28 Python
django 自定义过滤器的实现
2019/02/26 Python
pyqt5、qtdesigner安装和环境设置教程
2019/09/25 Python
tensorflow的计算图总结
2020/01/12 Python
python 8种必备的gui库
2020/08/27 Python
详解css3 Transition属性(平滑过渡菜单栏案例)
2017/09/05 HTML / CSS
html5图片上传预览示例分享
2014/04/14 HTML / CSS
html5调用app分享功能示例(WebViewJavascriptBridge)
2018/03/21 HTML / CSS
美国购买舞会礼服网站:Couture Candy
2019/12/29 全球购物
40岁生日感言
2014/02/15 职场文书
2015年教导处教学工作总结
2015/07/22 职场文书
《圆的面积》教学反思
2016/02/19 职场文书