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

被折叠的 条评论
为什么被折叠?



