Django中的CBV和FBV示例介绍
前言
本文主要给大家介绍了关于Django中CBV和FBV的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。
一、 CBV
CBV是采用面向对象的方法写视图文件。
CBV的执行流程:
浏览器向服务器端发送请求,服务器端的urls.py根据请求匹配url,找到要执行的视图类,执行dispatch方法区分出是POST请求还是GET请求,执行views.py对应类中的POST方法或GET方法。
使用实例:
urls.py
path('login/',views.Login.as_view())
views.py
fromdjangoimportviews#在views.py的基础上添加 classLogin(views.Views): defget(self,request) pass defpass(self,request) pass
使用装饰器:
fromdjangoimportviews fromdjango.utils.decoratorsimportmethod_decorator defouter(func): definner(request,*args,**kwargs): returnfunc(request,*args,**kwargs) returninner classLogin(views.View): @method_decorator(outer) defget(self,request,*args,**kwargs): pass
在类上面加装饰器,和在函数上加装饰器是一个性质。但加的方法有所不同。
eg:
@method_decorator(outer,name='dispatch') classLogin(views.View):
自定义dispatch:
classLogin(views.View): defdispatch(self,request,*args,**kwargs): print(2222) ret=super(Login,self).dispatch(request,*args,**kwargs) print(1111) returnret defget(self,request,*args,**kwargs): print('GET') returnHttpResponse('OK')
执行结果:2222
GET 1111
二、 FBV
FBV即在views.py中以函数的形式写视图。
看代码:
urls.py
fromdjango.conf.urlsimporturl,include #fromdjango.contribimportadmin frommytestimportviews urlpatterns=[ #url(r‘^admin/‘,admin.site.urls), url(r‘^index/‘,views.index), ]
views.py
fromdjango.shortcutsimportrender defindex(req): ifreq.method==‘POST‘: print(‘methodis:‘+req.method) elifreq.method==‘GET‘: print(‘methodis:‘+req.method) returnrender(req,‘index.html‘)
注意此处定义的是函数【defindex(req):】
index.html
index