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中以函数的形式写视图。

Django中的CBV和FBV的更多相关文章

  1. django中的CBV

    CBV介绍 我们在写一个django项目时,通常使用的都是FBV(function base views) 而CBV(class base views)也有它自己的应用场景,比如在写一个按照rest规 ...

  2. Django中的CBV视图

    Web 开发是一项无聊而且单调的工作,特别是在视图功能编写方面更为显著.为了减少这种痛苦,Django植入了视图类这一功能,该功能封装了视图开发常用的代码,无须编写大量代码即可快速完成数据视图的开发, ...

  3. django中视图函数的FBV和CBV

    1.什么是FBV和CBV FBV是指视图函数以普通函数的形式:CBV是指视图函数以类的方式. 2.普通FBV形式 def index(request): return HttpResponse('in ...

  4. Django基础之CBV和FBV

    我们之前写过的是基于函数的view,就叫FBV.还可以把view写成基于类的. 1. FBV版 def add_class(request): if request.method == "P ...

  5. flask中的CBV和FBV

    flask中CBV使用 from flask import Flask, views app = Flask(__name__) class Login(views.MethodView): meth ...

  6. Django中CBV的执行顺序之源码解析

    浅析Django中的CBV的执行顺序 下图为CBV方式的执行顺序,大概执行流程如下: 其中浅蓝色为在假设自己写的类,即Test类中没有dispatch方法的情况下的执行顺序,当自己的类中有dispat ...

  7. Flask(3)- flask中的CBV、werkzeug+上下文初步解读、偏函数和线程安全

    一.flask中的CBV 对比django中的CBV,我们来看一下flask中的CBV怎么实现? from flask import Flask, render_template, url_for, ...

  8. Flask中的CBV和上下文初步解读

    一 . flask中的CBV 相对于Django中的CBV,让我们来看看flask中的CBV是如何实现的 ? from flask import Flask, render_template, url ...

  9. django中的FBV和CBV

    django中请求处理方式有2种:FBV 和 CBV 一.FBV FBV(function base views) 就是在视图里使用函数处理请求. 看代码: urls.py from django.c ...

随机推荐

  1. emit 方法表翻译

      Name Description Add Adds two values and pushes the result onto the evaluation stack.添加两个值并将结果推送到评 ...

  2. 使用Redis进行简单的数据缓存

    引入spring-data-redis包.jedis.connection-pool包 applicationContext.xml的配置 <!-- redis Connection --> ...

  3. 初识JSP,第一天

    1.什么JSP java Server Page java 服务端的页面,它和servlet 一样可以提供动态的html 响应. 不同的是 servlet 以 java 代码 为主 jsp 以html ...

  4. 利用QVOD架设流媒体服务器/电影服务器/vod服务器

    电影服务器一点也不稀罕,是的我们见的太多了,但是大家有没有想过自己也能架一个这样的服务器? 当然现在架一个电影服务器不切实际,去年吵的闹哄哄的“视听许可证”想必大家有所耳闻,再加上电影对服务器的要求一 ...

  5. Quartz大致介绍(一)

    1. 介绍 Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,是完全由java开发的一个开源的任务日程管理系统,“任务进度管理器”就是一个在预先确定(被纳 ...

  6. ‘Starting Tomcat v9.0 Server at localhost’ has encountered a problem.

    上述错误是在将Web应用部署到Tomcat,最后一步 右键单击选择Start的时候报错,原因是我在启动Tomcat之前,就已经运行了Tomcat,导致端口被占用.将之前的Tomcat关闭重新启动就可以 ...

  7. 移动端HTML5实现文件上传

    PC端上传文件多半用插件,引入flash都没关系,但是移动端要是还用各种冗余的插件估计得被喷死,项目里面需要做图片上传的功能,既然H5已经有相关的接口且兼容性良好,当然优先考虑用H5来实现. 用的技术 ...

  8. vue-router初涉

    概念: vue-router: vue官方路由插件. 路由: 指单页面应用的路径管理系统.在vue中都是单页应用,相当于只有一个index.html页面,所以无法使用<a>标签,我们使用路 ...

  9. Vue组件通讯

    Vue最常用的组件通讯有三种:父->子组件通讯.子->父组件通讯,兄弟组件通讯.(template用的pug模板语法) 1.父->子组件通讯 父->子组件通讯,是通过props ...

  10. HTML 5 教程

    HTML5 是下一代的 HTML.有必要再过一遍.看下要点. 具体看  http://www.w3school.com.cn/html5/index.asp    教程 和  HTML5 标签参考手册 ...