Flask入门(4):CBV和FBV
目录
- 4.CBV和FBV
- 4.1 继承 views.View
- 4.2 继承 views.MethodView
4.CBV和FBV
前面的例子中,都是基于视图函数构建视图(FBV),和Django一样,Flask也有基于类构建视图(CBV)的方法。这种方式用的不多,可了解。
由于视图类本身不是添加到路由系统的视图函数,真正的视图函数是类的as_view()
的返回值。并且手动使用app.add_url_rule()
函数添加路由。
视图类中主要有两个常用的属性:
- methods:表明可接受的请求方法,是个列表,可选多个;
- decorators:表明需要加在这个类的视图函数上的装饰器,是个列表,可选多个;
CBV有如下两种方式:
4.1 继承 views.View
继承 views.View。在dispatch_request
函数中写具体的处理逻辑,不同的请求方法需要判断。
# CBV示例
from flask import Flask, views
import functoolsapp = Flask(__name__)def wapper(func):@functools.wraps(func)def inner(*args, **kwargs):print("inner")return func(*args, **kwargs)return innerclass IndexView(views.View):methods = ['GET', 'PUT']# 添加装饰器,加载这个类下的方法上decorators = [wapper, ]def dispatch_request(self):if request.method == 'GET':print('GET Index')return 'Index'else if request.method == 'PUT':print('PUT Index')return 'Index'app.add_url_rule('/index', view_func=IndexView.as_view(name='index')) # name是endpointif __name__ == '__main__':app.run()
4.2 继承 views.MethodView
每个 HTTP 方法都映射到一个同名的类方法(名称为小写字母),可以完成反射。
# CBV示例
from flask import Flask, views
import functoolsapp = Flask(__name__)def wapper(func):@functools.wraps(func)def inner(*args, **kwargs):print("inner")return func(*args, **kwargs)return innerclass IndexView(views.MethodView):methods = ['GET', 'POST']# 添加装饰器,加载这个类下的方法上decorators = [wapper, ]def get(self):print('get 请求')return 'get'def post(self):print('post 请求')return 'post'app.add_url_rule('/index', view_func=IndexView.as_view(name='index')) # name是endpointif __name__ == '__main__':app.run()
使用这种方式,也可不提供 methods
属性,它会自动使用相应的类方法。
Flask入门(4):CBV和FBV相关推荐
- flask中的CBV和FBV
flask中CBV使用 from flask import Flask, viewsapp = Flask(__name__)class Login(views.MethodView):methods ...
- 视图层详解,cbv和fbv,文件上传
day64 一.复习 二.视图层之请求对象 三.视图层之响应对象 补充知识之json序列化与反序列化 四.cbv和fbv 五.文件上传 六.postman软件 七.form表单,提交地址 八.Pych ...
- Flask中的CBV
Flask中的CBV 在Flask中和Django一样有两种视图模式,一种是基于函数,一种是基于类.下面来讨论一下Flask的CBV模式. 首先,说明一下flask视图函数注册路由的本质: 其实,ro ...
- Flask入门之Jinjia模板的一些语法
原文:https://www.cnblogs.com/wongbingming/p/6807771.html Flask入门之Jinjia模板的一些语法 1. 变量表示 {{ argv }} 2. 赋 ...
- Flask入门之Virtualvenv的安装及使用(windows)
转自 https://www.cnblogs.com/wongbingming/p/6795455.html(Flask入门之Virtualvenv的安装及使用(windows)) Virtualve ...
- flask中的CBV , flask-session在redis中存储session , WTForms数据验证 , 偏函数 , 对象里的一些小知识...
flask中的CBV , flask-session在redis中存储session , WTForms数据验证 , 偏函数 , 对象里的一些小知识 flask中的CBV写法 后端代码 # 导入vie ...
- Flask入门系列(转载)
一.入门系列: Flask入门系列(一)–Hello World 项目开发中,经常要写一些小系统来辅助,比如监控系统,配置系统等等.用传统的Java写,太笨重了,连PHP都嫌麻烦.一直在寻找一个轻量级 ...
- Flask入门之上传文件到服务器
https://www.cnblogs.com/wongbingming/p/6802660.html flask 文件的上传下载和excel操作 Flask入门之上传文件到服务器 今天要做一个简单的 ...
- Flask入门之上传文件到本地服务器
Flask入门之上传文件到服务器 今天要做一个简单的页面,可以实现将文件 上传到服务器(保存在指定文件夹) #Sample.py 1 # coding:utf-8 2 3 from flask imp ...
最新文章
- 【初学者指南】在ASP.NET MVC 5中创建GridView
- php无极分类非递归_无限极分类算法,对你一定有帮助
- 从LINQ开始之LINQ to Objects(上)
- InfluxDB 开源分布式时序、事件和指标数据库
- AI公开课:19.02.20 雷鸣教授《人工智能革命与机遇》课堂笔记以及个人感悟
- 【转】匈牙利命名法(Hungarian Notation)
- 单片机串行收发电路制作记录
- 【转】Magento2 数据库操作
- php 判断wap,php判断是否wap手机客户端的方法详解
- HTML打开网页拒绝访问,WindowsApps无法访问怎么解决?
- 00后没玩过的电脑编程游戏
- 【OpenCV】透视变换 Perspective Transformation
- Codeforces 396C
- WordPiece 和 BPE 的区别
- 功不唐捐 玉汝于成---贪心算法终结
- CM3启动汇编文件详解
- 【机械仿真】基于matlab打桩机运动学仿真【含Matlab源码 2101期】
- 京东商城空调标价0元引发抢购
- fhkldlkfhj
- reverse 函数讲解
热门文章
- Quick Power
- Nginx配置项优化详解
- Linux--连接MySQL出现1045错误 解决方法
- 关于vue 动态引入(异步加载import和require)组件的方法和坑(按需懒加载组件,动态生成路由)babel-plugin-dynamic-import-node 优化编译速度
- Linux内核是什么?Linux内核是怎么工作的?
- App Inventor 2 题库设计制作流程
- 如何查看域控计算机是哪个用户登陆,查看域控制器上登录用户
- 基于STM32单片机的直流电机控制系统加减速正反转设计方案原理图程序
- 2022软件测试工程师的简历怎么写?
- 浅析计算机信息管理系统任务书,计算机工程系学生就业信息管理系统任务书