django 两种视图模式FBV、CBV
FBV(function base views)就是在视图函面使用函数处理请求 CBV(class base views)就是在视图里面使用类处理请求
函数视图
代码语言:javascript复制#urls.py
urlpatterns = [
# url(r'^admin/', admin.site.urls),
# url(r'cbv/' , views.LoginView.as_view()),
url(r'fbv/',views.fbv) #设置url路径
]
#我们在看下视图的处理逻辑
def fbv(request):
if request.method == 'POST': #针对post方法
return HttpResponse("POST")
elif request.method == 'GET': #针对get方法
res = {"code":200,"statuc":"ok"}
return render(request,'test.html',locals())
else:
return HttpResponse("404")
CBV,基于反射实现根据请求方式不同,执行不同的方法。
- 开发模式 - 普通开发方式(前后端放在一起写) - 前后端分离
- 后端开发 为前端提供URL(API/接口的开发) 注:永远返回HttpResponse
类视图
代码语言:javascript复制#urls.py
urlpatterns = [
# url(r'^admin/', admin.site.urls),
url(r'cbv/' , views.LoginView.as_view()), #这是CBV的固定格式,它最后得到的是一个函数,具体过程见源码
# url(r'fbv/',views.fbv)
]
from django.views import View
#views
class LoginView(View):
def post(self,request): #post方法的处理逻辑
return HttpResponse("OK")
def get(self,request): #get方法的处理逻辑
#return render(request,'test.html',locals())
args = request.GET['args']
return HttpResponse(args)
# http://127.0.0.1:8000/salt/api/?args=haha
#cbv相对于fbv来说、不在需要进行对请求方法的判断,而是直接用函数代替。