FBV和CBV的区别(源码分析)
FBV和CBV源码分析
- FBV直接调用user方法执行业务代码
- CBV相当于在FBV上面封装了一层
from django.contrib import admin
from django.urls import path
from app01 import views
urlpatterns = [
path('users/', views.UserView.as_view()),
]
from django.views import View
class UserView(View):
def get(self, request, *args, **kwargs):
return JsonResponse({"code": 1000, "data": "xxx"})
def post(self, request, *args, **kwargs):
return JsonResponse({"code": 1000, "data": "xxx"})
下面来做一下源码分析:
第一步: 当请求过来的时候. view.UserView会找到父类View中的as_view()方法.
第二步: 调用到view()方法, 将类赋值给self, 并调用dispatch方法:
第三步: 执行dispatch()中getattr找到类的绑定对象UserView.method -> 直接调用method对应方法
本文来自博客园,作者:{Max},仅供学习和参考
posted on 2023-04-16 21:29 huxiaofeng 阅读(73) 评论(0) 编辑 收藏 举报