Django CBV和FBV

Django CBV和FBV

Django内部CBV内部接收方法操作:

1、通过客户端返回的请求头RequestMethod与RequesrtURL,会以字符串形式发送到服务器端。

2、取到值后通过dispatch方法将请求头转换为小写,然后通过反射查找类里的对应方法。

  • /index/ -> 函数名
  • /index/ -> 类

注:FBV & CBV 建议两者都用。


FBV:function base view

# url.py
index -> 函数
urlpatterns = [
            path('admin/', admin.site.urls),
           path('index/', views.函数名),
]

# view.py
def 函数名(request):
            return HttpResponse('Index')

CBV:class base view

# url.py
index -> 类
urlpatterns = [
           path('admin/', admin.site.urls),
            path('home/', views.类名.as_view()),
]

# view.py
class 类名(View):
  # 调用父类中的dispatch,保留父类功能的基础上增加功能
  def dispatch(self, request, *args, **kwargs):
            print("定制功能1")
            result = super(Home,self).dispatch(request,*args,**kwargs)
            print("定制功能2")
            return result

  def get(self,request):
            return render(request,'home.html')

原文地址:https://www.cnblogs.com/xiangsikai/p/10929586.html