- Django帶有一個用戶認證系統。它處理用戶賬號,租,權限以及基於cookie的用戶會話。
- 用戶可以直接使用Django自帶的用戶表
基本字段
模型類位置:from django.contrib.auth.models import User
username | 用戶名 |
---|---|
password | 密碼 |
郵箱 | |
first_name | 名 |
last_name | 姓 |
is_superuser | 是否是管理員賬號(/admin) |
is_staff | 是否可以訪問admin管理界面 |
is_active | 是否是活躍用戶,默認True。一般不刪除用戶,而是將用戶的is_active設置爲False |
last_login | 上一次的登錄時間 |
date_joined | 用戶創建的時間 |
基本模型操作
創建用戶
1,創建普通用戶
from django.contrib.auth.models import User
user = User.objects.create_user(username='用戶名',password='密碼',email='郵箱',...)
2,創建超級用戶create_superuser
from django.contrib.auth.models import User
user = User.objects.create_superuser(username='用戶名',password='密碼',email='郵箱',...)
刪除用戶
from django.contrib.auth.models import User
try:
user = User.objects.get(username='用戶名')
user.is_active = False # 記當前用戶無效
user.save()
print("刪除普通用戶成功")
except:
print("刪除普通用戶失敗")
校驗密碼
from django.contrib.auth import authenticate
user = authenticate(username=username,password=password)
說明:
如果用戶名密碼校驗成功,則返回對應的user對象,否則返回None
修改密碼
from django.contrib.auth.models import User
try:
user = User.objects.get(username='用戶名')
user.set_password('654321')
user.save()
return HttpRespones("刪除普通用戶成功")
except:
return HttpRespones("刪除普通用戶失敗")
登錄狀態保持
from django.contrib.auth import login
def login_view(request):
user = authenticate(username=username,password=password)
login(request,user)
登錄狀態校驗
from django.contrib.auth.decorators import login_required
@login_required
def index_view(request):
#該視圖必須爲用戶登錄狀態下才可訪問
#當前登錄用戶可通過request.user獲取
login_user = request.user
登錄狀態取消
from django.contrib.auth import logout
def logout_view(request):
logout(request)
對django內建的用戶表擴展字段
方案1:通過建立新表,跟內建表做1對1
方案2:繼承內建的抽象user模型類
繼承內建抽象類
步驟:
1,添加新的應用
2,定義模型類繼承AbstractUser
3,settings.py中指明AUTH_USER_MODEL='應用名.類名'
注意:此操作需要在第一次Migrate之前進行
示例 - user/models.py - 添加user應用
from django.db import models
from django.contrib.auth.models import AbstractUser
class UserInfo(AbstractUser):
phone = models.CharField(max_length=11,default='')
settings.py添加配置
AUTH_USER_MODEL = 'user.UserInfo'
添加用戶
from user.models import UserInfo
UserInfo.objects.create_user(username='aa',password='bb',phone='cc')