我們在開發乙個**時, 無法避免的需要設計**的使用者系統, 此時我們需要實現包括使用者註冊,登入,認證,登出,修改密碼等功能,把這些事全部寫一遍也挺麻煩的,
django作為乙個完美主義的終極框架, 也當然會為使用者想到這些痛點,它內建了強大的使用者認證系統,預設使用auth_user表來儲存使用者資料
auth模組的使用
常用內建方法
authenticate(
) 使用者認證,一般校驗使用者和密碼,嚴謹一點多新增乙個郵箱
login(
) 任證後的登入物件
logout(
) 退出登入
is_authenticated(
) 判斷使用者是否通過認證
login_requierd(
) 登入認證裝飾器
create_user(
) 建立普通使用者
create_superuser(
) 建立管理員使用者
check_password(
) 校驗密碼
set_password(
) 設定、修改 密碼
user物件的屬性,
建立使用者
python manage.py createsuperuser
兩個模組一般結合使用,如下:
匯入模組
from django.contrib.auth import authenticate,login
defuser_login
(request)
:if request.method ==
"get"
:return render(request,
'login.html'
)else
: name = request.post.get(
"name"
) pwd = request.post.get(
"password"
)# 校驗使用者名稱和密碼,
user = authenticate(username=name,password=pwd)
if user:
# 通過後新增到全域性, 後期所有地方都可以呼叫到這個物件
login(request,user)
return redirect(
'base'
)else
:return render(request,
'login.html'
)成功後定向到這個頁面(首頁)
defbase
(request)
:return render(request,
'base.html'
)先建立模板login.html和base.html檔案。
到這裡已經學完auth模組的所有常用方法, 感覺不過如此, 繼續前行吧!!
is_superuser:是否是超級管理員(如果is_staff=
1,可以任意增刪查改任何表資料)
is_active : 是否允許使用者登入, 設定為 false,可以在不刪除使用者的前提下禁止使用者登入(三次密碼輸入錯誤禁用使用者)
這內建的認證系統那麼好用, 但是auth_user表字段都是固定的那幾個, 在專案無法直接使用, 裡面的字段遠遠無法滿足對專案的需求,在此。
聰明的你可能會想到新建另外一張表通過一對一和內建的auth_user表關聯,這樣雖然滿足了需求,但也很麻煩, 這樣
我們可以通過繼承內建的abstractuser類, 來定義乙個自己的model類
這樣既能根據專案需求靈活的設計使用者表,又能後使用django強大的認證系統, 豈不美哉。
1 內建的auth_user表,要加欄位,加不了,擴充套件該錶
-方式一:一對一
-方式二,通過繼承
# 方式二:通過繼承,一定要記住再setting中配置
## 重點:使用這種方式,一開始就要用
from django.contrib.auth.models import abstractuser
class
user
(abstractuser)
:# id=models.autofield(primary_key=true)
# username = models.charfield(max_length=128)
phone = models.charfield(max_length=32)
addr = models.charfield(max_length=32)
注意: 一定要在配置模組中新增如下常量配置(重點)
## setting.py中
auth_user_model =
完!! django元件之使用者認證元件
匯入語法 fromdjango.contribimportauth django.contrib.auth中提供了許多方法,這裡主要介紹其中的三個 這些都是基於使用auth user這張表的前提的 提供使用者認證的功能,當認證成功之後會返回乙個物件,沒有返回none 一般需要倆兩個引數,userna...
Django學習之使用者登入
前面說了,使用者註冊,今天我們就來說說使用者登入吧。今天說的是使用django的session功能,而不是它的auth模組,後期,如果有機會的話,我再寫點auth認證登入。其實重點就是request.session功能,預設django就將其session功能開啟了,我們僅僅需要的是配置下資料庫。w...
Django之使用者登入例項
1,django目錄結構 需要用到的檔案用紅箭頭標記 2,首先在templates模版目錄下建立login.html檔案 3,將bootstrap匯入到static plugins目錄下 ps bootstrap是twitter推出的乙個用於前端開發的開源工具包,有很豐富的前端各種案例 4,首先在t...