Django中的CBV和FBV

Django中的CBV和FBV

一、  CBV

CBV是采用面向对象的方法写视图文件。

CBV的执行流程:

浏览器向服务器端发送请求,服务器端的urls.py根据请求匹配url,找到要执行的视图类,执行dispatch方法区分出是POST请求还是GET请求,执行views.py对应类中的POST方法或GET方法。

使用实例:

urls.py

path(‘login/‘,views.Login.as_view())

views.py

from django import views       #在views.py的基础上添加

class Login(views.Views):

    def get(self,request)

         pass

         def pass(self,request)

              pass

使用装饰器:

from django import views

from django.utils.decorators import method_decorator

def outer(func):

    def inner(request,*args,**kwargs):

        return func(request,*args,**kwargs)

    return inner

class Login(views.View):

    @method_decorator(outer)

    def get(self,request,*args,**kwargs):

        pass

在类上面加装饰器,和在函数上加装饰器是一个性质。但加的方法有所不同。

eg:

@method_decorator(outer,name=‘dispatch‘)

class Login(views.View):

自定义dispatch:

class Login(views.View):

    def dispatch(self, request, *args, **kwargs):

        print(2222)

        ret = super(Login, self).dispatch(request, *args, **kwargs)

        print(1111)

        return ret
def get(self, request, *args, **kwargs):

           print(‘GET‘)

           return HttpResponse(‘OK‘)
执行结果:2222
         GET
         1111

二、    FBV

FBV即在views.py中以函数的形式写视图。

原文地址:https://www.cnblogs.com/xshan/p/8467763.html

时间: 2024-10-10 16:11:25

Django中的CBV和FBV的相关文章

django中的CBV

CBV介绍 我们在写一个django项目时,通常使用的都是FBV(function base views) 而CBV(class base views)也有它自己的应用场景,比如在写一个按照rest规范写接口时,CBV的适用性就比FBV更强 先来看看CBV在django中的写法,与FBV有什么不同的地方 url(r'^students/', views.StudentsView.as_view()) 路由 from django.views import View class StudentsV

flask中的CBV和FBV

flask中CBV使用 from flask import Flask, views app = Flask(__name__) class Login(views.MethodView): methods = ['POST', 'GET'] # 如果需要在CBV中加装饰器的话,括号里就是装饰器的内存地址,可以传多个 decorators = () def get(self): print('get 请求') return 'login get' def post(self): print('p

django中的FBV和CBV

django中请求处理方式有2种:FBV 和 CBV 一.FBV FBV(function base views) 就是在视图里使用函数处理请求. 看代码: urls.py from django.conf.urls import url, include # from django.contrib import admin from mytest import views urlpatterns = [ # url(r'^admin/', admin.site.urls), url(r'^in

Django中请求的生命周期 和 FBV模式和CBV模式

Django的生命周期就是你的 一个请求所发生的整个流程 Django的生命周期内到底发生了什么呢?? 1. 当用户在浏览器中输入url时,浏览器会生成请求头和请求体发给服务端 请求头和请求体中会包含浏览器的动作(action),这个动作通常为get或者post,体现在url之中. 2. url经过Django中的wsgi,再经过Django的中间件,最后url到过路由映射表,在路由中一条一条进行匹配, 一旦其中一条匹配成功就执行对应的视图函数,后面的路由就不再继续匹配了. 3. 视图函数根据客

Django的CBV和FBV

1. Django支持两种对应关系,CBV和FBV FBV:function base view &CBV:class base view  url.py    index---函数名  views.py    def 函数(request): /index/ -> 函数名 /index/ ->类,请求来了以后,会执行类里面的指定的方法. 2.CBV提交----- class Home(view) Home类必须继承view. 2.1 urls.py中写对应关系 2.2 views.p

Django的 CBV和FBV

FBV CBV 回顾多重继承和Mixin 回到顶部 FBV FBV(function base views) 就是在视图里使用函数处理请求. 在之前django的学习中,我们一直使用的是这种方式,所以不再赘述. 回到顶部 CBV CBV(class base views) 就是在视图里使用类处理请求. Python是一个面向对象的编程语言,如果只用函数来开发,有很多面向对象的优点就错失了(继承.封装.多态).所以Django在后来加入了Class-Based-View.可以让我们用类写View.

Django的CBV与FBV

知识预览 FBV CBV FBV FBV(function base views) 就是在视图里使用函数处理请求. 在之前django的学习中,我们一直使用的是这种方式,所以不再赘述. CBV CBV(class base views) 就是在视图里使用类处理请求. Python是一个面向对象的编程语言,如果只用函数来开发,有很多面向对象的优点就错失了(继承.封装.多态).所以Django在后来加入了Class-Based-View.可以让我们用类写View.这样做的优点主要下面两种: 提高了代

Django——CBV与FBV

一.FBV FBV(function base views) 就是在视图里使用函数处理请求. 二.CBV CBV(class base views) 就是在视图里使用类处理请求. Python是一个面向对象的编程语言,如果只用函数来开发,有很多面向对象的优点就错失了(继承.封装.多态).所以Django在后来加入了Class-Based-View.可以让我们用类写View.这样做的优点主要下面两种: 提高了代码的复用性,可以使用面向对象的技术,比如Mixin(多继承) 可以用不同的函数针对不同的

Django中CBV和Restful API中的APIView源码分析

Django中CBV和Restful API中的APIView源码分析 python的Django框架的视图处理可以用FBV, 也可以采用CBV.首先定义一个CBV视图: from django.views import Viewfrom django.http import JsonResponseclass Book(View):    def get(self, request):        ll = [{'key':value}]        return JsonResponse