构建红图注册到蓝图中
目标:使用红图的route方法来代替蓝图的route方法。
1.创建视图函数,将视图函数注册到红图中
api = Redprint("user")
@api.route("/get")
def get_user():return "视图函数"
2.将自定义的红图注册到蓝图中
def create_blueprint_v1():bp_v1 = Blueprint("/v1", __name__)book.api.register(bp_v1)user.api.register(bp_v1)return bp_v1
3.将蓝图注册到flask 核心app中
def register_my_blueprint(app):from app.api.v1 import create_blueprint_v1app.register_blueprint(create_blueprint_v1(), url_prefix="/v1")
4.创建flask对象,并将蓝图写入app中
def create_app():app = Flask(__name__)register_my_blueprint(app)return app
5.由于红图是自己定义的,所以红图的相关方法需要自己去构建,可以参照蓝图的相关方法来进行创建,需要自己写的方法包括如下几个:
(1)route【第一步中的route路由方法】
(2)register【第二步中的register注册方法】
6.创建方法先去查看蓝图的route方法,蓝图的route方法如下:
def route(self, rule, **options):def decorator(f):endpoint = options.pop("endpoint", f.__name__)self.add_url_rule(rule, endpoint, f, **options)return freturn decorator
7,仿照着书写我们的方法:
class Redprint:def __init__(self, name):self.name = nameself.mound = []def route(self, rule, **options):def decorator(f):self.mound.append((f, rule, options))return freturn decoratordef register(self, bp, url_prefix=None):if url_prefix is None:url_prefix = "/" + self.namefor f, rule, options in self.mound:endpoint = options.pop("endpoint", f.__name__)bp.add_url_rule(url_prefix + rule, endpoint, f, **options)
注:从蓝图的方法中,可以看出,蓝图可以直接调用它自己的对象,然后使用add_url_rule方法,将传入的数据直接保存在了自己的对象中,但是我们的route方法没有传入蓝图对象,也就无法调用add_url_rule来保存相关参数,所以,我们就先将传入的参数保存使用列表保存下来。并且,因为我们不可能只有一个视图函数,所以为了区分,我们将一个视图函数的rule,f,option用元组封装然后再存入列表中,等到其他方法中有对象时,我们再来遍历将视图参数传入对象中进行保存。
恰好,在register方法中,我们传入了一个bp的蓝图对象,现在就可以直接再次将之前存放在列表中的视图参数通过add_url_rule进行保存。
构建红图注册到蓝图中相关推荐
- rust房屋建造蓝图_都说蓝图,而不是白图、红图,你知道为什么?
文学上喜欢把对未来的构想或计划,称为蓝图.蓝图(英文:blueprint)在工业上指"蓝图纸"(晒图纸的俗称),因为图纸是蓝色的,所以被称为"蓝图".也许是因其 ...
- 三线表是什么?R语言使用table1包绘制(生成)三线表、使用单变量分列构建三线表、编写自定义三线表结构(将因子变量细粒度化重新构建三线图)、编写自定义函数在三线表中添加p值
三线表是什么?R语言使用table1包绘制(生成)三线表.使用单变量分列构建三线表.编写自定义三线表结构(将因子变量细粒度化重新构建三线图).编写自定义函数在三线表中添加p值 目录
- ios pusher使用_如何使用JavaScript和Pusher构建实时图
ios pusher使用 by Rahat Khanna 通过拉哈特·汉娜 如何使用JavaScript和Pusher构建实时图 (How to build a Realtime Graph usin ...
- Accurate self-correction of errors inlong reads using de Bruijn graphs LoRMA使用de Bruijn图对长read中的错误
Accurate self-correction of errors inlong reads using de Bruijn graphs LoRMA使用de Bruij ...
- echart 动画 饼图_echarts构建关系图,节点可收缩和展开,可添加点击事件
echarts下载及使用 ECharts,一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Fir ...
- MATLAB高光谱图像构建KNN图
在高光谱图像的特征提取过程中,采用非线性降维的方式对高光谱图像降维的过程中,采用图自编码器来对数据进行降维,需要将利用高光谱图像的结构信息和内容信息,则需要将高光谱图像数据构造为一个图结构,图结构的构 ...
- Docker实战 (docker swarm的应用,docker集群的构建,在docker集群中部署服务)
Docker实战 ----docker swarm的应用,docker集群的构建,在docker集群中部署服务 转载来源:https://blog.csdn.net/No_red/article/de ...
- echarts 3d饼图_echarts构建关系图,节点可收缩和展开,可添加点击事件
echarts下载及使用 ECharts,一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Fir ...
- MySQL Workbench构建ER图(实体关系图)
MySQL Workbench是一款专为MySQL设计的ER/数据库建模工具,它是著名的数据库设计工具DBDesigne4的继任者,可以通过MySQL Workbench设计和创建新的数据库图示,管理 ...
- matlab箱形图_使用javascript可视化世界幸福来构建箱形图
matlab箱形图 Data visualization is an important and sometimes undervalued tool in a data scientist's to ...
最新文章
- MyEclipse +Flex 整合
- 初学rpa的十大经典错误及解决办法_Python3之十大经典错误及其解决办法
- 裂墙推荐!IntelliJ IDEA 常用插件一览,让效率成为习惯
- NYOJ 24 素数距离问题
- OpenDDS通讯rtps_discovery对等发现模式的pub和sub匹配的日志
- 编写数学公式的好工具
- 为什么美团全面推动 K8S 落地,咬紧牙关也要搞云原生?
- json Date对象在js中的处理办法
- Puppet安装部署篇(一)
- 右手螺旋判断磁感应强度方向_弹簧左旋or右旋在功能和应用上有什么区别,如何判断左旋还是右旋...
- atitit.科技公司的超级武器--超级框架,到底要不要自己的框架??
- 基于Python的校园学生一卡通管理系统
- matlab教程课后答案肖汉光,MATLAB大学教程
- 手机python30编程教程入门_Python新手入门教程_在手机上就能学习编程的软件
- Android——获取实时的手机屏幕四个点经纬度(百度地图)
- 基于keras实现双向GRU的中文情感分析
- c语言调用tuxedo步骤,c语言入门之BCB客户端tuxedo开发实例
- 高性能计算--HPCC--他人评述
- 面板显示技术:LCD与OLED
- 给nz-select的nz-option设置样式