使用蓝图为 Flask 动态生成路由
Posted
技术标签:
【中文标题】使用蓝图为 Flask 动态生成路由【英文标题】:Dynamically generate routes for Flask using blueprints 【发布时间】:2015-07-05 09:39:24 【问题描述】:我喜欢为托管在 Google App Engine 上的 Flask 应用生成路由。目前我正在使用蓝图来生成路线。比如
conference_routes = Blueprint('conference_routes', __name__)
@conference_routes.route('/home/Conferences/QCCC-Mappleton-2015')
def mappleton_conference():
return render_template('Mappleton-2015.html')
然后我像这样从 main.py 注册蓝图
app.register_blueprint(conference_routes)
这变得非常麻烦,尤其是当我们有超过 100 条路线时。我希望在数据库中定义路由并在运行时动态构建它们。
这可能吗?
【问题讨论】:
【参考方案1】:This答案显示.add_url_rule
的使用:
for page in session.query(Page):
route = u'/0/1/2'.format(page.id1, page.id2, page.id3)
app.add_url_rule(
route,
page.name, # this is the name used for url_for
partial(actual_handler, page=page),
)
This answer 提供了设置这些路由的有用信息,this answer 也有几个很好的例子。
听起来您想在设置应用变量后立即添加所有路由:
conference_routes = Flask(__name__)
# load info from database
# insert routes
如果您的文件都像您的示例一样是 1-1,那么您甚至不需要该路由加载方法 - 只需从 url 中查找文件:
@conference_routes.route('/<path:path>')
def search_file(path):
# (in)validate path
# return html template or 404
【讨论】:
以上是关于使用蓝图为 Flask 动态生成路由的主要内容,如果未能解决你的问题,请参考以下文章
小知识点免费头像API,用 Python Flask 动态生成一个汉字头像