【发布时间】:2012-03-19 12:03:30
【问题描述】:
默认情况下,当使用内置服务器 (Flask.run) 运行 Flask 应用程序时,它会监视其 Python 文件并在其代码更改时自动重新加载应用程序:
* Detected change in '/home/xion/hello-world/app.py', reloading
* Restarting with reloader
不幸的是,这似乎只适用于 *.py 文件,我似乎没有找到任何方法将此功能扩展到其他文件。最值得注意的是,当 模板 更改时,让 Flask 重新启动应用程序非常有用。我已经记不清有多少次我在模板中摆弄标记并且因为没有看到任何更改而感到困惑,只是发现应用程序仍在使用旧版本的 Jinja 模板。
那么,有没有办法将 Flask 监控文件放在 templates 目录中,还是需要深入到框架的源代码中?
编辑:我使用的是 Ubuntu 10.10。真的没有在任何其他平台上尝试过。
经过进一步查询,我发现模板中的更改确实实时更新,无需重新加载应用程序本身。但是,这似乎只适用于那些传递给flask.render_template 的模板。
但碰巧在我的应用程序中,我在 Jinja 模板中使用了很多可重用的参数化组件。它们以{% macro %}s 的形式实现,驻留在专用的“模块”中,并在实际页面中{% import %}ed。一切都很好,很干...除了那些导入的模板显然从未检查过修改,因为它们根本不通过render_template。
(奇怪的是,通过{% extends %} 调用的模板不会发生这种情况。至于{% include %},我不知道,因为我并没有真正使用它们。)
总而言之,这种现象的根源似乎位于 Jinja 和 Flask 或 Werkzeug 之间的某个地方。我想这可能需要为其中任何一个项目访问错误跟踪器 :) 同时,我接受了 jd. 的答案,因为这是我实际使用的解决方案 - 它就像一个魅力.
【问题讨论】:
-
确保应用程序配置为 DEBUG=True,参见the docs。