Flask中的CBV

Flask中的CBV

Flask中的CBV

第一种


class Index(views.MethodView):
    methods = ['GET', 'POST']   
    decorators = []

    def get(self):
        return 'GET'

    def post(self):
        return 'POST'

app.add_url_rule('/index', view_func=Index.as_view(name='index'))  # name='index'相当于设置endpoint

Index.as_view内部也会根据请求方式进行反射执行对应函数即执行dispatch_request

app.add_url_rule是进行装饰器路由映射内部执行的函数,本质上也是由add_url_rule添加的映射关系,decorators是添加的装饰器列表

第二种


class Index(views.View):
        methods = ['GET', 'POST']
        decorators = []

        def dispatch_request(self):
            print('dispatch_request')
            return 'Index!'

app.add_url_rule('/index', view_func=Index.as_view(name='index'))

第二种继承的是views.View,这样就需要写dispatch_request函数,但也不必去进行分发请求,那么就会像FBV一样。

posted @ 2019-04-27 17:47 sfencs 阅读( ...) 评论( ...) 编辑 收藏
### 关于NM CBV的概念 在网络管理(Network Management, NM)协议中,CBV代表Control Bit Vector(控制位向量)。它是一个字节长度的数据字段,用于表示网络管理状态信息。具体来说,CBV中的每一位都可以用来传递特定的网络管理信号或状态标志[^1]。 然而,“CBV”在不同的上下文中可能具有完全不同的含义。例如,在Django框架中,CBV指的是Class-Based Views(基于类的视图),这是一种通过定义Python类来实现HTTP请求处理的方式[^2]。尽管两者都使用了“CBV”的缩写,但它们的应用领域和技术背景完全不同。 如果讨论的是编程或框架环境下的NM CBV,则可能是某种自定义扩展或者误解。目前没有公开资料表明存在名为“NM CBV”的编程概念或框架组件。因此,这里的“NM CBV”更有可能是指AUTOSAR NM协议中的CBV字段,而非一种具体的编程技术。 --- ### AUTOSAR NM中的CBV详解 在AUTOSAR标准下,NM消息的数据段包含了多个部分,其中CBV是最核心的部分之一。以下是其主要作用: - **源节点地址ID**:标识发送此NM消息的ECU节点。 - **CBV(Control Bit Vector)**:这是一个8比特的字段,每一位都有特定的意义,通常用于指示当前节点的状态或其他网络管理相关信息。例如,某些位可能会被用来标记睡眠模式、唤醒请求或者其他同步事件。 - **数据域**:这部分允许开发者根据实际需求定义额外的有效载荷。它可以包括两字节的用户数据以及四字节的PNC(Partial Network Coordination)位向量。 #### CBV的具体结构 虽然未提供详细的位分配方案,但在典型的实现中,CBV的各位可能有以下用途: - 某些固定位置的比特用于通用的功能标志(如活动/休眠状态)。 - 剩余的比特则可以根据项目需求灵活配置。 --- ### Django中的CBV对比分析 相比之下,Django中的CBV是一种面向对象的设计方式,旨在简化Web应用开发过程。它的基本原理是将HTTP方法映射到类的方法上,从而使得代码更加模块化和可重用。例如,`get()` 和 `post()` 方法分别对应GET和POST类型的HTTP请求[^4]。 下面是一段简单的Django CBV示例代码: ```python from django.views import View from django.http import HttpResponse class ExampleView(View): def get(self, request): return HttpResponse("这是GET请求的响应") def post(self, request): return HttpResponse("这是POST请求的响应") ``` 需要注意的是,上述代码与AUTOSAR NM中的CBV没有任何关联。二者仅共享相同的字母组合作为名称缩写。 --- ### 结论 综上所述,“NM CBV”并非指代任何已知的编程范式或软件架构组成部分;相反,它是汽车电子通信领域内的术语,特指AUTOSAR NM协议里的控制位向量。而Django及其他现代Web框架所采用的CBV则是另一套独立的技术体系,专注于提升后端服务构建效率。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值