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入門教程(四十三)Python的NumPy數(shù)據(jù)類型
這篇文章主要介紹了Python入門教程(四十二)Python的NumPy數(shù)組裁切,NumPy有一些額外的數(shù)據(jù)類型,并通過一個字符引用數(shù)據(jù)類型,例如 i 代表整數(shù),u 代表無符號整數(shù)等,需要的朋友可以參考下2023-05-05在Python的Django框架中實現(xiàn)Hacker News的一些功能
這篇文章主要介紹了在Python的Django框架中實現(xiàn)Hacker News的一些功能,包括投票“頂”評論等功能,需要的朋友可以參考下2015-04-04關(guān)于Python去除字符串中空格的方法總結(jié)
用Python處理字符串時會經(jīng)常要去掉字符串首、尾或者中間的空白,以得到我們想要的結(jié)果,下面這篇文章主要給大家介紹了關(guān)于Python去除字符串中空格的相關(guān)資料,需要的朋友可以參考下2022-12-12在Python的Django框架下使用django-tagging的教程
這篇文章主要介紹了在Python的Django框架下使用django-tagging的教程,針對網(wǎng)絡(luò)編程中的tag部分功能提供幫助,需要的朋友可以參考下2015-05-05python3中的eval和exec的區(qū)別與聯(lián)系
這篇文章主要介紹了python3中的eval和exec的區(qū)別與聯(lián)系,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-10-10python操作xls使用xlwings代提openpyxl基礎(chǔ)
這篇文章主要為大家介紹了python操作xls使用xlwings代提openpyxl示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-08-08