django驗證系統(tǒng)的具體使用
user對象
用戶對象是認證系統(tǒng)的核心。django的認證框架中的用戶只有一個類
默認用戶的主要屬性
- username
- password
- first_name
- last_name
創(chuàng)建用戶
創(chuàng)建用戶最直接的方法是使用包含create_user()的函數(shù)
from django.contrib.auth.models import User
user=User.objects.create_user("username","email","password")
創(chuàng)建超級用戶
通過命令行方式創(chuàng)建超級用戶
python manage.py createsuperuser
更改密碼
第一種:通過命令行方式
python manage.py changepassword (你的用戶名,如果沒有輸入,默認當前的用戶)
第二種:通過數(shù)據(jù)模型開修改
from django.contrib.auth.models importf User
user=User.objects.get(username=(需要修改的用戶名))
user.set_password("new password")
user.save()
驗證用戶
authenticate(request,username,password)
使用authenticate(request)來驗證用戶。它使用username和password作為參數(shù)來驗證,對每個身份驗證后端進行檢查。如果后端驗證有效,則返回一個User對象,如果沒有,將返回None
web請求認證
django使用sessions和中間件將身份驗證系統(tǒng)掛接到請求對象中
它們在每次請求都會提供request.user屬性。如果當前沒有用戶登錄。這個屬性將會設置為AnonymousUser,否則將會被設置為user實例
你可以使用is_authenticatded區(qū)分兩者
只讀屬性,始終返回 True (匿名用戶 AnonymousUser.is_authenticated 始終返回 False )。這是一種判斷用戶是否已通過身份認證的方法。這并不意味著任何權限,也不會檢查用戶是否處于活動狀態(tài)或是否具有有效會話。即使通常你會根據(jù) request.user 檢查這個屬性,以確定它是否被 AuthenticationMiddleware 填充(表示當前登錄的用戶),但是你應該知道該屬性對于任何 User 實例都返回 True。
if request.user.is_authenticated:
pass
else:
pass
用戶如何登陸
如果有已驗證的用戶想添加到session中,將通過login()函數(shù)完成
login(request,user,)要在視圖中讓用戶登錄,使用 login() 。它需要 HttpRequest 對象和 User 對象。通過 Django 的 session 框架, login() 會在 session 中保存用戶的ID。
from django.contrib.auth import authenticate,login
def fun(request):
username=request.POST("username")
password=request.POST("password")
user=authenticate(request,username=username,password=password)
if user is not None:
login(request,user)
else:
pass
用戶如何登出
logout(request)
如果已經(jīng)通過django.contrib.auth.login()登錄的用戶想要登出,可以使用logout()方法,需要傳入request
from django.contrib.auth import logout
def logout_view(request):
logout(request)
限制對未登錄用戶的訪問
原始方式
限制訪問頁面最原始的辦法就是檢查,request.user.is_authenticated并重定向到登錄頁面
from django.conf import settings
from django.shortcuts import redirect
def my_view(request):
if not request.user.is_authenticated:
return redirect()
login_required裝飾器
作為快捷方式,你可以使用login_required()裝飾器
from django.contrib.auth.decorators import login_required
@login_required
def my_view(request):
...
login_required()會執(zhí)行以下操作:
- 如果用戶沒有登錄,會重定向到settings.LOGIN_URL,并傳遞絕對路徑到查詢字符串中,例如: /accounts/login/?next=/polls/3/ 。
- 如果用戶已經(jīng)登錄,則正常執(zhí)行視圖
- login_required()也有可選參數(shù)login_url用來指定重定向的路由
- 默認情況下,成功驗證時用戶跳轉(zhuǎn)的路徑保存在名為 "next" 的查詢字符串參數(shù)中。如果你希望這個參數(shù)使用不同名稱,請在 login_required() 中傳遞可選參數(shù) redirect_field_name :
LoginRequired Mixin
使用基于類的視圖時,可以使用LoginRequiredMixin實現(xiàn)和login_required相同的行為。這個Mixin應該在繼承列表最左邊的位置
from django.contrib.auth.mixins import LoginRequiredMixin
class MyView(LoginRequiredMixin,View):
login_url="/login/"
redirect_field_name="xxx"
到此這篇關于django驗證系統(tǒng)的具體使用的文章就介紹到這了,更多相關django 驗證系統(tǒng)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python selenium實現(xiàn)斷言3種方法解析
這篇文章主要介紹了Python selenium實現(xiàn)斷言3種方法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-09-09
解決安裝python3.7.4報錯Can''''t connect to HTTPS URL because the S
這篇文章主要介紹了解決安裝python3.7.4報錯Can't connect to HTTPS URL because the SSL module is not available,本文給大家簡單分析了錯誤原因,給出了解決方法,需要的朋友可以參考下2019-07-07
Python實現(xiàn)從log日志中提取ip的方法【正則提取】
這篇文章主要介紹了Python實現(xiàn)從log日志中提取ip的方法,涉及Python文件讀取、數(shù)據(jù)遍歷、正則匹配等相關操作技巧,需要的朋友可以參考下2018-03-03
Python在后臺自動解壓各種壓縮文件的實現(xiàn)方法
這篇文章主要介紹了Python在后臺自動解壓各種壓縮文件的實現(xiàn)方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11
Pandas.DataFrame重置Series的索引index(reset_index)
本文主要介紹了Pandas.DataFrame重置Series的索引index(reset_index),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-02-02

