Django的FBV与CBV

本文介绍了Django中的函数基础视图(FBV)和类基础视图(CBV)。FBV强调函数处理请求,视图名无关紧要;而CBV通过类和方法处理,提供复用性和面向对象特性。尽管FBV更为常见,但CBV在特定场景下有其优势。
FBV(function base views)

        就是在视图里使用函数处理请求

 url中

#url
from django.contrib import admin
from django.urls import path
from mysql_apps import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('request_test/', views.request_test)
]


views中 

#views

from django.shortcuts import render,HttpResponse

# Create your views here.

def request_test(request):
    return HttpResponse("这是一个FBV请求")

 运行项目,输入URL,获得的页面回复是这样的。

FBV笔记:

  • 处理函数必须接受requset对象,
  • 视图函数的名称无关紧要,它不必以某种方式命名,以便Django能够识别它,但是函数的命名一定要能够清晰的描述它的功能
  • 视图函数返回一个HttpResponse响应的对象,每个视图函数,负责返回一个对象
CBV(class base view )

        CDV是基于类来处理请求,在views中创建类,在类中创建处理各自请求的方法

url中

from django.contrib import admin
from django.urls import path
from mysql_apps import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('request_test_CBV/', views.CbvClass.as_view()),
]

 views中

from django.shortcuts import render,HttpResponse
from django.views import View


class CbvClass(View):

    def get(self, request):
        return HttpResponse('get ok')

    def post(self, request):
        return HttpResponse('post ok')

因为是get请求,所以执行了get方法,回复的是get ok 

CBV笔记:

  • CBV提供了一个as_view()静态方法(也就是类方法),调用这个方法,会创建一个类的实例,然后通过实例调用dispatch()方法,dispatch()方法会根据request的method的不同调用相应的方法来处理request(如get,post()等)
  • 提高了代码的复用性,可以使用面向对象的技术,比如Mixin(多继承)
  • 可以用不同的函数针对不同的HTTP方法处理,而不是通过很多if判断,可以提高代码可读性

        一般来说可能使用FBV的会更多,CBV用的可能会更少

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值