1.FBV与CBV

Posted venicid

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1.FBV与CBV相关的知识,希望对你有一定的参考价值。

yuan的Blog:https://www.cnblogs.com/yuanchenqi/articles/8715364.html

 

1.FBV与CBV

1.1 FBV

 

1.2 CBV

 

 

2.CBV源码剖析

2.1 案例

urls

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

from app01 import views

urlpatterns = [
    path(admin/, admin.site.urls),
    path(login/, views.LoginView.as_view()),
]

 

 

 

views

from django.shortcuts import render,HttpResponse
# Create your views here.
from django.views import View


class LoginView(View):

    def get(self,request):
        return render(request,login.html)

    def post(self,request):
        return HttpResponse("POST")

    def put(self,request):
        pass

 

 

login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CBV</title>
</head>
<body>

<form action="" method="post">
    % csrf_token %
    <input type="submit">
</form>


</body>
</html>

 

 

效果

技术图片技术图片

 

 2.2 源码剖析

1. 请求方式(http协议的)

技术图片

技术图片

 

更新data

   put  整个对data更新一次

  patch  只更新局部的一部分

 

 2. as_view()方法如何来的?

实质: 类下的反射做的分发

as_view()的本质就是执行view

技术图片

 

源码剖析

 

技术图片技术图片

技术图片

 

 什么时候调用view?实质是dispatch方法

 

当url中用户访问时,才调用

 技术图片

 

 dispatch分发,派遣

dispath执行,就是请求方式方法的执行,就是开发人员写的方法

 

 结果验证

技术图片

技术图片

 技术图片

 

 技术图片

 

以上是关于1.FBV与CBV的主要内容,如果未能解决你的问题,请参考以下文章

Django框架之视图层(views)介绍

添加登录装饰器的两种方式:FBV和CBV

Django视图系统(view)

python—day57 Django介绍

FBV与CBV 及CBV源码分析

Django视图层--FBV与CBV