若是你想用auth模塊 那麼你就用全套數據庫
createsuperuser 建立超級用戶 這個超級用戶就能夠擁有登錄django admin後臺管理的權限django
Auth模塊是Django自帶的用戶認證模塊:session
咱們在開發一個網站的時候,無可避免的須要設計實現網站的用戶系統。此時咱們須要實現包括用戶註冊、用戶登陸、用戶認證、註銷、修改密碼等功能,這還真是個麻煩的事情呢。app
Django做爲一個完美主義者的終極框架,固然也會想到用戶的這些痛點。它內置了強大的用戶認證系統--auth,它默認使用 auth_user 表來存儲用戶數據。框架
跟用戶相關的功能模塊
用戶的註冊 登錄 驗證 修改密碼 ...
執行數據庫遷移命令以後 會生成不少表 其中的auth_user是一張用戶相關的表格
添加數據
createsuperuser 建立超級用戶 這個超級用戶就能夠擁有登錄django admin後臺管理的權限
from django.contrib import auth
from django.contrib import auth user_obj = auth.authenticate(username=username,password=password # 必需要用 由於數據庫中的密碼字段是密文的 而你獲取的用戶輸入的是明文
auth.login(request,user_obj) # 將用戶狀態記錄到session中
print(request.user.is_authenticated) # 判斷用戶是否登陸 若是是大家用戶會返回False
print(request.user) # 若是沒有執行auth.login那麼拿到的是匿名用戶
from django.contrib.auth.decorators import login_required @login_required(login_url='/xxx/') # 局部配置 def index(request) pass # 全局配置 settings文件中 LOGIN_URL = '/xxx/'
request.user.check_password(old_password)
request.user.set_password(new_password) request.user.save() # 修改密碼的時候 必定要save保存 不然沒法生效
auth.logout(request) # request.session.flush()
User.objects.create(username =username,password=password) # 建立用戶名的時候 千萬不要再使用create 了 User.objects.create_user(username =username,password=password) # 建立普通用戶 User.objects.create_superuser(username =username,password=password,email='123@qq.com') # 建立超級用戶 郵箱必填
第一種 :使用一對一關係 不考慮網站
第二種: 使用類的繼承ui
必定要在配置文件中 告訴djangourl
告訴django orm再也不使用auth默認的表 而是使用你自定義的表spa
在setting.py文件中配置設計
AUTH_USER_MODEL = 'app01.Userinfo' # '應用名.類名'
使用類繼承
from django.contrib.auth.models import AbstractUser
class Userinfo(AbstractUser): # 千萬不要跟原來表中的字段重複 只能創新 phone = models.BigIntegerField() avatar = models.CharField(max_length=32)
最後執行數據庫遷移命令
全部的auth模塊功能 所有都基於你建立的表,而再也不使用auth_user