Django-27 django內建用戶系統 基本字段 基本模型操作 對django內建的用戶表擴展字段

  • Django帶有一個用戶認證系統。它處理用戶賬號,租,權限以及基於cookie的用戶會話。
  • 用戶可以直接使用Django自帶的用戶表

基本字段

模型類位置:from django.contrib.auth.models import User

username 用戶名
password 密碼
email 郵箱
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')
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章