Flask中的蓝图

原文:https://stackoverflow.com/questions/24420857/what-are-flask-blueprints-exactly

蓝图的汉语意思:
用感光后变成蓝色或其他颜色的感光纸制成的图纸。供工程设计施工或编绘地图等用。(来自 http://cidian.xpcha.com/28d668gajnz.html
显然,人们可以根据蓝图来建造大厦,桥梁等工程建筑。

回到Flask框架中,蓝图是一种模板,程序可以依据其生成“一段”web应用。其本质等同于一个模板:
模板

开发者可以在应用的不同地方使用蓝图技术。每当你使用这个方法时,蓝图会依据应用的模板创建一个新的版本——–这就如同我们要做许多金属工艺品(上图右侧的物品),可以先做出一个样品的石膏模板,然后根据这个模板来浇筑生成物品。

# An example
from flask import Blueprint

#生成一个蓝图,蓝图名为mold
tree_mold = Blueprint("mold", __name__)mold

# 配置tree_mold的特定路由
def leaves():
@tree_mold.route("/leaves")              
    return "This tree has leaves"

@tree_mold.route("/roots")
def roots():
    return "And roots as well"

@tree_mold.route("/rings")
@tree_mold.route("/rings/<int:year>")
def rings(year=None):
    return "Looking at the rings for {year}".format(year=year)

这是一个简单的树的模板例子,任何应用可以访问树的叶子,根,年轮。其本身是一个模板,不可以处理路由,响应客户端,除非注册到一个flask应用上:

from tree_workshop import tree_mold
#注册蓝图到app上,并设定特定的前缀
app.register_blueprint(tree_mold, url_prefix="/oak")    
app.register_blueprint(tree_mold, url_prefix="/fir")
app.register_blueprint(tree_mold, url_prefix="/ash")   

可以应用register_blueprint方法将tree_mold蓝本注册到flask应用上。url_prefix设置特定的蓝图的路由。
例如我们想访问tree_mold的叶子,可以通过hostname:port/ash/leaves 来访问。

附录:
1.完整代码如下:
app.py

#app.py
from tree_mold  import tree_mold
from flask import Flask

from flask import Flask
app = Flask(__name__)


app.register_blueprint(tree_mold, url_prefix="/oak")
app.register_blueprint(tree_mold, url_prefix="/fir")
app.register_blueprint(tree_mold, url_prefix="/ash")


if __name__ == '__main__':
    app.run()

tree_mold.py

#tree_mold.py
from flask import Blueprint

tree_mold = Blueprint("mold", __name__)

@tree_mold.route("/leaves")
def leaves():
    return "This tree has leaves"

@tree_mold.route("/roots")
def roots():
    return "And roots as well"

@tree_mold.route("/rings")
@tree_mold.route("/rings/<int:year>")
def rings(year=None):
    return "Looking at the rings for {year}".format(year=year)

2.程序运行结果如下:
这里写图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值