話很少說,咱們來快速配置一個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})