最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

Django的FBV和CBV的示例讲解

来源:动视网 责编:小采 时间:2020-11-27 14:20:29
文档

Django的FBV和CBV的示例讲解

Django的FBV和CBV的示例讲解:本篇文章给大家带来的内容是关于Django的FBV和CBV的示例讲解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。FBV : function base views, 就是在视图里使用函数处理请求。urlpatterns = [ path('index/'
推荐度:
导读Django的FBV和CBV的示例讲解:本篇文章给大家带来的内容是关于Django的FBV和CBV的示例讲解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。FBV : function base views, 就是在视图里使用函数处理请求。urlpatterns = [ path('index/'


本篇文章给大家带来的内容是关于Django的FBV和CBV的示例讲解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

FBV : function base views, 就是在视图里使用函数处理请求。

urlpatterns = [
 path('index/', views.index),
]
# 视图函数里
def index(request):
 return render(request,"index.html")

CBV : class base views, 就是在视图里使用类处理请求。

urlpatterns = [
 path("login/",views.LoginView.as_view())
]
# 视图函数里
class LoginView(View):

 def dispatch(self, request, *args, **kwargs):
 """
 重写dispatch方法, 可以放一些专属于LoginView的操作
 """
 return ...

 def get(self,request):
 return HttpResponse("OK")

 def post(self,request):
 return HttpResponse("OK")

 def put(self,request):
 return HttpResponse("OK")

 def delete(self,request):
 return HttpResponse("OK")

CBV的源码剖析:

Django的url是将一个请求分配给可调用的函数的,而不是一个class。针对这个问题,class-based view(即Django的基础View类)提供了一个 as_view() 的静态方法(也就是类方法),调用这个方法,会通过 self = cls(**initkwargs) 创建一个类的实例,然后通过实例调用 dispatch()方法,dispatch()方法会根据request的method的不同调用相应的方法来处理request(如get() , post()等)。到这里,这些方法和function-based view差不多了,要接收request,得到一个response返回。如果方法没有定义,会抛出HttpResponseNotAllowed异常。

为什么要有CBV这种模式?

python的一大重要的特性就是面向对象。而cbv更能体现python的面向对象。cbv是通过class的方式来实现视图方法的。class相对于function,更能利用多态的特定(多态: 可对不同类的对象使用同样的操作),因此更容易从宏观层面上将项目内的比较通用的功能抽象出来。

文档

Django的FBV和CBV的示例讲解

Django的FBV和CBV的示例讲解:本篇文章给大家带来的内容是关于Django的FBV和CBV的示例讲解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。FBV : function base views, 就是在视图里使用函数处理请求。urlpatterns = [ path('index/'
推荐度:
标签: 详解 示例 fb
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top