關於django的auth模塊快速配置

話很少說,咱們來快速配置一個django的auth模塊html

auth模塊的功能:進行驗證登陸,註銷,更改密碼,保存登錄狀態,判斷登錄狀態python

命令相關:數據庫

1. 建立超級用戶
    
        python manage.py createsuperuser
        
    2. 認證  校驗用戶名和密碼
        obj = auth.authenticate(request,username,password)
        認證成功返回 對象
                失敗  None
                
    3. 保存登陸狀態   記錄到session
        login(request, user)
        
    4. 註銷        刪除session
        logout(request)
        
    5. 判斷登陸狀態
        request.user.is_authenticated()
        
    6. 建立用戶
        from django.contrib.auth.models import User
        # 密碼是明文的
        User.objects.create(username=username,password=password)
        
        # 密碼是密文的 普通用戶
        User.objects.create_user(**form_obj.cleaned_data)
        
         # 建立超級用戶
        User.objects.create_superuser(email='',**form_obj.cleaned_data)
        
    7. 密碼相關
        # 檢驗密碼
        request.user.check_password('root1234')
        # 設置密碼
        request.user.set_password('admin1234')
        request.user.save()

補充:django自帶的用戶字段有時不知足咱們的需求,這時候須要咱們進行自定義django

自定義步驟:session

  1 在settings.py中聲明user表 :AUTH_USER_MODEL = "app01.UserInfo"app

  2 在models中導入: from django.contrib.auth.models import AbstractUserui

  3 建立model,只須要聲明額外添加的字段:  spa

class UserInfo(AbstractUser):
    phone = models.CharField(max_length=11)

配置完成:案例code

from django.shortcuts import render, redirect
from django.contrib import auth
from django.contrib.auth.decorators import login_required
from app01.forms import RegForm
from django.contrib.auth.models import User,AbstractUser
from app01.models import UserInfo


def login(request):
    if request.method == 'POST':
        # 方法一
        username = request.POST.get('username')
        password = request.POST.get('password')
        obj = auth.authenticate(request, username=username, password=password)
        # 方法二
        # request.POST.pop('csrfmiddlewaretoken')
        # obj = auth.authenticate(request, **request.POST)
        # print(obj)
        if obj:
            # 記錄登陸狀態
            auth.login(request, obj)

            next = request.GET.get('next')

            if next:
                return redirect(next)
            return redirect('/index/')

    # 返回登陸頁面
    return render(request, 'login.html')


@login_required
def index(request):
    # 登陸狀態
    # print(request.user.is_authenticated())

    print(request.user.password)

    if request.user.check_password('root1234'):

        request.user.set_password('admin1234')
        request.user.save()
    return render(request, 'index.html')


# 註銷
def logout(request):
    auth.logout(request)

    return redirect('/login/')


def reg(request):
    form_obj = RegForm()

    if request.method == 'POST':
        form_obj = RegForm(request.POST)
        if form_obj.is_valid():
            # 數據庫操做
            # username = form_obj.cleaned_data.get('username')
            # password = form_obj.cleaned_data.get('password')
            #
            # UserInfo.objects.create(username=username,password=password)

            form_obj.cleaned_data.pop('re_password')
            UserInfo.objects.create_user(is_staff=1, **form_obj.cleaned_data)

            # 建立超級用戶
            # UserInfo.objects.create_superuser(email='', **form_obj.cleaned_data)

            return redirect('/login/')

    return render(request, 'reg.html', {'form_obj': form_obj})
相關文章
相關標籤/搜索