Django 用户认证(Auth)组件
2021-06-11 本文已影响0人
Chris0Yang
Django用户认证(Auth)组件一般用在用户的登录注册上,用于判断当前的用户是否合法,并跳转到登陆成功或失败页面。
参数:
username:用户名
password:密码
email:邮箱(create_superuser(): 方法要多加一个email邮箱参数)
Django用户认证(Auth)组件需要导入auth模块:
# 认证模块
from django.contrib import auth
# 对应数据库
from django.contrib.auth.models import User
返回值是用户对象
# Django的Auth模块
# 认证模块
from django.contrib import auth
def LogAuth(request):
# 对应数据库
from django.contrib.auth.models import User
# 1)create(): 创建一个普通用户,密码是明文
# User.objects.create(username="User01", password="123")
# 2)create_user(): 创建一个普通用户,密码是密文
# User.objects.create_user(username="User02", password="123")
# 3)create_superuser(): 创建一个超级用户,密码是密文,要多传一个email邮箱参数
User.objects.create_superuser(username="Administrator", password="123", email="Administrator@qq.com")
return HttpResponse("OK")
创建用户对象的是三种方法:
image.png参数:
- request:用户对象
返回值:None
例子:
# Django的Auth_Login登录页面的模块
def Auth_Login(request):
# 认证模块
from django.contrib import auth
if request.method == "GET":
return render(request, "auth_login.html")
else:
username = request.POST.get("username")
password = request.POST.get("password")
# 1)使用内置模块的验证时候,连接数据库查询内置的auth_user表
user_obj = auth.authenticate(username=username, password=password)
# 2)也可以在models模块表里,创建用户信息
# models.User.objects.filter(username=username, password=password)
print(user_obj) # 返回是 None
# print(user_obj.username) # 返回是 string 类型
if not user_obj:
return redirect("/auth_login/")
else:
auth.login(request, user_obj) # 作用是返回客户端cookie值,并且在session表中记录session的值
path = request.GET("next") or "/index/"
print(path)
return redirect(path)
登录退出
注销用户使用logout()方法,需要清空session信息,将request赋值为匿名用户。
使用前导入:
from django.contrib import auth
参数:
- request:用户对象
返回值:None
例子:
# 登录退出
def Auth_Logout(request):
from django.contrib import auth
test = auth.login(request)
print(test)
return redirect("/auth_login/")
设置装饰器登录
设置装饰器,给需要登录成功后 才能访问的页面统一加装饰器
例子:
# 使用前要导入
from django.contrib.auth.decorators import login_required
@login_required()
def Auth_Index(request):
return HttpResponse("index")