CBV和FBV實現驗證登入

2021-10-19 10:17:07 字數 4658 閱讀 2846

cbv加裝飾器

class

url(r'^login.html$', views.login.as_view())# 類名的關聯方法

在執行前後做一些操作,此時是輸出post或者get。

# cbv加裝飾器方法

defget

(self,request,

*args,

**kwargs)

:return render(request,

'login.html',)

@method_decorator(outer)

defpost

(self, request,

*args,

**kwargs)

: user = request.post.get(

'user'

) pwd = request.post.get(

'pwd'

) c = models.administrator.objects.

filter

(username=user, password=pwd)

.count(

)if c:

request.session[

'is_login']=

true

request.session[

'username'

]= user

rep = redirect(

'/index.html'

)return rep

else

: message =

"使用者名稱或密碼錯誤"

return render(request,

'login.html'

,)

@method_decorator(outer,name=

"dispatch"

)# 或直接用名字加到dispatch上

class

login

(views.view)

:# @method_decorator(outer) # 或直接加到dispatch前

"使用者名稱或密碼錯誤"

return render(request,

'login.html'

,)

cbv繼承

:# 在所有**執行前先進行操作

# 呼叫父類的dispatch方法,執行完get或post函式後再進行return

return ret

defget(self,request,

*args,

**kwargs)

:return render(request,

'login.html',)

defpost

(self, request,

*args,

**kwargs)

: user = request.post.get(

'user'

) pwd = request.post.get(

'pwd'

) c = models.administrator.objects.

filter

(username=user, password=pwd)

.count(

)if c:

request.session[

'is_login']=

true

request.session[

'username'

]= user

rep = redirect(

'/index.html'

)return rep

else

: message =

"使用者名稱或密碼錯誤"

return render(request,

'login.html'

,)fbv加裝飾器

function

# fbv

@outer

deflogin

(request)

: message =

"" v = request.session

if request.method ==

"post"

: user = request.post.get(

'user'

) pwd = request.post.get(

'pwd'

) c = models.administrator.objects.

filter

(username=user, password=pwd)

.count(

)if c:

request.session[

'is_login']=

true

request.session[

'username'

]= user

rep = redirect(

'/index.html'

)return rep

else

: message =

"使用者名稱或密碼錯誤"

obj = render(request,

'login.html',)

return obj

Django高階之FBV和CBV

django的請求生命週期是指當使用者在瀏覽器上輸入url到使用者看到網頁的這個時間段內,django後台所發生的事情。當使用者在瀏覽器中輸入url時,瀏覽器會生成請求頭和請求體發給服務端。url經過django中的wsgi,再經過django的中介軟體,最後到達路由對映表,在路由中一條一條進行匹配...

Django中的FBV和CBV區別

fbv就是在url中乙個路徑對應乙個函式 urlpatterns url r admin admin.site.urls url r index views.index 在檢視函式中 def index request return render request,index.html cbv就是在u...

python CBV及CBV登入驗證

通過 cbv 繼承的 view 原始碼,可以看到通過呼叫 as view 中的 view 方法,最後返回的是對應類的 self.dispatch request,那麼可以在呼叫 dispatch 之前做乙個 session 驗證,實現登入驗證。return httpresponse 使用者名稱密碼不...