Django之FBV和CBV-CSDN博客

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

一、FBV与CBV


在我们日常学习Django中都是用的FBVfunction base views方式就是在视图中用函数处理各种请求。而CBVclass base view则是通过类来处理请求。
Python是一个面向对象的编程语言如果只用函数来开发有很多面向对象的优点就错失了继承、封装、多态。所以Django在后来加入了Class-Based-View。可以让我们用类写View。

这样做的优点主要下面两种

  1. 提高了代码的复用性可以使用面向对象的技术比如Mixin多继承
  2. 可以用不同的函数针对不同的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"})



 

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: go