Django CBV類的用法詳解
前言
之前我們在路由匹配的時候,一個url對應(yīng)一個函數(shù),其實我們還可以一個url對應(yīng)一個類,這個就是CBV,下面我們來簡單的介紹一下CBV
一、CBV的基本用法
1、在路由匹配中要這樣寫,class_login是對應(yīng)的類,as_view()是固定寫法,必須要這么寫,記住后面有個括號
url(r'^class_login/', views.class_login.as_view()),
2、在視圖函數(shù)中導(dǎo)入一個模塊
from django import views
3、在視圖函數(shù)中寫一個類,如果是get請求,則執(zhí)行g(shù)et方法,如果是post請求,則執(zhí)行post方法
class class_login(views.View):
# 1、如果是get請求,則執(zhí)行g(shù)et函數(shù)
@method_decorator(outer)
def get(self,request,*args,**kwargs):
print(request.path)
return HttpResponse("yyyyyy")
# 2、如果是post請求,則執(zhí)行post函數(shù)
def post(self,request,*args,**kwargs):
pass
4、post和get請求是最常見的,還有其他的方法,我們看下視圖函數(shù)中繼承的父類View中的方法,還支持如下這么多的方法
http_method_names = ['get', 'post', 'put', 'patch', 'delete', 'head', 'options', 'trace']
二、裝飾器
上面基本的用法我們就已經(jīng)介紹完了,如果要用裝飾器,該怎么弄呢?
1、需要導(dǎo)入一個模塊
from django.utils.decorators import method_decorator
2、然后定義一個裝飾器
def outer(func):
def inner(request,*args,**kwargs):
print(request.method)
rep = func(request,*args,**kwargs)
return rep
return inner
3、我們該如何把裝飾器加的類中的,就需要用到我們第一步導(dǎo)入的模塊了
3_1、為類中的一個函數(shù)添加裝飾器,方法如下
@method_decorator(outer)
def get(self,request,*args,**kwargs):
print(request.path)
return HttpResponse("yyyyyy")
3_2、為類中的所有的方法添加裝飾器,方法如下
@method_decorator(outer,name="dispatch")
class class_login(views.View):
# 1、如果是get請求,則執(zhí)行g(shù)et函數(shù)
# @method_decorator(outer)
def get(self,request,*args,**kwargs):
print(request.path)
return HttpResponse("yyyyyy")
# 2、如果是post請求,則執(zhí)行post函數(shù)
def post(self,request,*args,**kwargs):
pass
dispatch就是django默認(rèn)給我們定義的方法,在執(zhí)行g(shù)et或者post方法之前會執(zhí)行的一個方法
4、子類如果想調(diào)用父類的方法,有兩種方法來實現(xiàn)
class login(views.View):
def dispatch(self, request, *args, **kwargs):
# 調(diào)用父類的dispatch方法的兩種方法
# 方式1
super(login,self).dispatch(request,*args,**kwargs)
# 方式2
super().dispatch(request, *args, **kwargs)
return HttpResponse("ok")
def get(self,request):
return HttpResponse("get")
def post(self,rquest):
return HttpResponse("post")
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python調(diào)用API實現(xiàn)智能回復(fù)機(jī)器人
這篇文章主要為大家詳細(xì)介紹了python調(diào)用API實現(xiàn)智能回復(fù)機(jī)器人,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-04-04
python高并發(fā)異步服務(wù)器核心庫forkcore使用方法
這篇文章主要介紹了python高并發(fā)異步服務(wù)器核心庫forkcore的使用方法,大家參考使用吧2013-11-11
簡明 Python 基礎(chǔ)學(xué)習(xí)教程
無論您剛接觸電腦還是一個有經(jīng)驗的程序員,本書都將有助您學(xué)習(xí)使用Python語言2007-02-02
Python獲取基金網(wǎng)站網(wǎng)頁內(nèi)容、使用BeautifulSoup庫分析html操作示例
這篇文章主要介紹了Python獲取基金網(wǎng)站網(wǎng)頁內(nèi)容、使用BeautifulSoup庫分析html操作,結(jié)合實例形式分析了Python基于urllib包的網(wǎng)頁內(nèi)容獲取,以及使用BeautifulSoup分析html相關(guān)操作技巧,需要的朋友可以參考下2019-06-06
Python?Decorator的設(shè)計模式演繹過程解析
本文主要梳理了Python?decorator的實現(xiàn)思路,解釋了為什么Python?decorator是現(xiàn)在這個樣子,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07
關(guān)于Python的GPU編程實例近鄰表計算的講解
本文主要講解了Python的GPU編程實例近鄰表計算,通過一個近鄰表計算的案例,給出了適用于GPU加速的計算場景。需要了解的朋友可以參考一下這篇文章2021-08-08
使用python繪制人人網(wǎng)好友關(guān)系圖示例
這篇文章主要介紹了使用python繪制人人網(wǎng)好友關(guān)系圖示例,需要的朋友可以參考下2014-04-04

