默认情况下,当使用内置服务器(Flask.run
)运行 Flask 应用程序时,它会监视 Python 文件,并在代码发生变化时自动重新加载应用程序:
* Detected change in '/home/xion/hello-world/app.py', reloading
* Restarting with reloader
不幸的是,这似乎只适用于 * 文件,而且我似乎没有找到任何方法将此功能扩展到其他文件。最值得注意的是,当 模板发生变化时,让 Flask 重新启动应用程序将非常有用。我已经记不清自己有多少次在模板中摆弄标记,因为没有看到任何更改而感到困惑,结果发现这个应用程序仍在使用旧版的金贾模板。
那么,是否有办法让 Flask 监视器文件位于 模板目录中,还是需要深入到框架的源代码中?
编辑 : 我正在使用 Ubuntu 10.10,实际上还没有在其他平台上尝试过。
经过进一步的调查,我发现模板的变化的确是 are实时更新,而没有重新加载应用程序本身。然而,这似乎只适用于那些传递给 flask.render_template
的模板。
但碰巧的是,在我的应用程序中,我有相当多的可重用的,参数化的组件,我在金贾模板中使用它们。它们作为 {% macro %}
实现,驻留在专用的“模块”中,并被 {% import %}
分为实际的页面。所有漂亮和干燥... 除了那些导入的模板显然从来没有检查修改,因为他们不通过 render_template
在所有。
(奇怪的是,通过 {% extends %}
调用的模板不会发生这种情况。至于 {% include %}
,我不知道,因为我并不真正使用它们。)
总而言之,这种现象的根源似乎在金贾和 Flask 或 Werkzeug 之间的某个地方。我想这可能值得为这两个项目中的任何一个进行 bug 跟踪:)与此同时,我已经接受了 JD.的回答,因为这是我实际使用的解决方案——而且它工作起来像魔法一样。