Django

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

参数:

返回值: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

参数:

例子:

# 登录退出
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")
上一篇 下一篇

猜你喜欢

热点阅读