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 使用者名稱密碼不...