大家好,欢迎来到IT知识分享网。
一、两者的区别
1、在我们日常学习Django中,都是用的FBV(function base views)方式,就是在视图中用函数处理各种请求。而CBV(class base view)则是通过类来处理请求。
2、Python是一个面向对象的编程语言,如果只用函数来开发,有很多面向对象的优点就错失了(继承、封装、多态)。所以Django在后来加入了Class-Based-View。可以让我们用类写View。
3、这样做的优点主要下面两种:
- 提高了代码的复用性,可以使用面向对象的技术,比如Mixin(多继承);
- 可以用不同的函数针对不同的HTTP方法处理,而不是通过很多if判断,提高代码可读性。
二、示例
1、urls.py
from django.urls import path from app01 import views urlpatterns = [ # path('admin/', admin.site.urls), #FBV路由写法,基于函数 path('auth/', views.auth), #CBV写法,基于类的路由写法 path('user/',views.UserView.as_view()),
2、views.py
from django.http import JsonResponse from django.views import View #FBV的写法 def auth(request): if request.method == "GET": return JsonResponse({"status":True,"message":"GET"}) elif request.method == "POST": return JsonResponse({"status": True, "message": "POST"}) return JsonResponse({"status":True,"message":"..."}) #CBV写法 class UserView(View): def get(self,request): return JsonResponse({"status":True,"message":"get"}) def post(self,request): return JsonResponse({"status":True,"message":"post"}) def put(self,request): return JsonResponse({"status": True, "message": "put"}) def delete(self,request): return JsonResponse({"status": True, "message": "delete"})
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/146671.html