django 使用者認證(auth)元件一般用在使用者的登入註冊上,用於判斷當前的使用者是否合法,並跳轉到登陸成功或失敗頁面。
django 使用者認證(auth)元件需要匯入 auth 模組:
# 認證模組
from django.contrib import auth
# 對應資料庫
from django.contrib.auth.models import user
返回值是使用者物件。
建立使用者物件的三種方法:
引數:
from django.contrib.auth.models import user
user.objects.create(username=
'runboo'
,password=
'123'
)
from django.contrib.auth.models import user
user.objects.create(username=
'runbooo'
,password=
'123'
)
from django.contrib.auth.models import user
user.objects.create(username=
'runboooo'
,password=
'123'
,email=
)
驗證使用者的使用者名稱和密碼使用 authenticate() 方法,從需要 auth_user 表中過濾出使用者物件。
使用前要匯入:
from django.contrib import auth
引數:
**返回值:**如果驗證成功,就返回使用者物件,反之,返回 none。
**
def** login(request):**
if** request.method ==
"get":**
return
** render(request,
"login.html"
) username = request.post.get(
"username"
) password = request.post.get(
"pwd"
) valid_num = request.post.get(
"valid_num"
) keep_str = request.session.get(
"keep_str")**
if** keep_str.upper(
)== valid_num.upper():
user_obj = auth.authenticate(username=username, password=password)
**print
**(user_obj.username)
給驗證成功的使用者加 session,將 request.user 賦值為使用者物件。
登陸使用 login() 方法。
使用前要匯入:
from django.contrib import auth
引數:
返回值:none
**
def** login(request):**
if** request.method ==
"get":**
return
** render(request,
"login.html"
) username = request.post.get(
"username"
) password = request.post.get(
"pwd"
) valid_num = request.post.get(
"valid_num"
) keep_str = request.session.get(
"keep_str")**
if** keep_str.upper(
)== valid_num.upper():
user_obj = auth.authenticate(username=username, password=password)
**print
**(user_obj.username)
**if
****
not** user_obj:
**return
** redirect(
"/login/")**
else**:
auth.login(request, user_obj)
path = request.get.get(
"next")**
or**
"/index/"
**
print
**(path)
**
return
** redirect(path)
**else**:
**
return
** redirect(
"/login/"
)
登出使用者使用 logout() 方法,需要清空 session 資訊,將 request.user 賦值為匿名使用者。
使用前要匯入:
from django.contrib import auth
引數:
返回值:none
deflogout(request):
ppp = auth.logout(request)
print(ppp) # none
returnredirect("/login/")
設定裝飾器,給需要登入成功後才能訪問的頁面統一加裝飾器。
使用前要匯入:
"index頁面。。。"
)設定從哪個頁面訪問,登入成功後就返回哪個頁面。
strong>解析:
django 在使用者訪問頁面時,如果使用者是未登入的狀態,就給使用者返回登入頁面。
此時,該登入頁面的 url 後面有引數:next=使用者訪問的頁面的 url。
因此,設定在使用者登入成功後重定向的 url 為 next 引數的值。
但是,若使用者一開始就輸入登入頁面 logi,request.get.get(「next」) 就取不到值,所以在後面加 or,可以設定自定義返回的頁面。
\# 如果直接輸入 login、get(
) 就取不到值,path 可以自定義設定返回的頁面
path = request.get.get(
"next")**
or**
"/index/"
**return
** redirect(path)
django 使用者認證組auth 的筆記。
使用者認證元件 api 一 auth模組的方法 from django.contrib import auth 1,if驗證成功返回user物件,否則返回none user auth.authenticate username user,password pwd 2,定義當前登入物件 auth.lo...
Django之auth模組(使用者認證)
auth模組是對登入認證方法的一種封裝,之前我們獲取使用者輸入的使用者名稱及密碼後需要自己從user表裡查詢有沒有使用者名稱和密碼符合的物件,而有了auth模組之後就可以很輕鬆的去驗證使用者的登入資訊是否存在於資料庫中。除此之外,auth還對session做了一些封裝,方便我們校驗使用者是否已登入 ...
Django框架之 使用者認證auth模組
我們在開發乙個 時,無法避免的需要設計 的使用者系統,此時我們需要實現包括使用者註冊,登入,認證,登出,修改密碼等功能,把這些事全部寫一遍也挺麻煩的,django作為乙個完美主義的終極框架,也當然會為使用者想到這些痛點,它內建了強大的使用者認證系統,預設使用auth user表來儲存使用者資料 au...