默认情况下,使用内置服务器(Flask.run)运行Flask应用程序时,它会监视其Python文件,并在代码更改时自动重新加载应用程序:
* Detected change in '/home/xion/hello-world/app.py', reloading
* Restarting with reloader
Run Code Online (Sandbox Code Playgroud)
不幸的是,这似乎仅适用于*.py文件,我似乎没有找到任何方法将此功能扩展到其他文件.最值得注意的是,当模板更改时让Flask重新启动应用程序非常有用.我已经不知道有多少次我在模板中摆弄标记并且因为没有看到任何变化而感到困惑,只是发现应用程序仍在使用旧版本的Jinja模板.
那么,有没有办法让Flask监控文件存在于模板目录中,还是需要深入到框架的源代码?
编辑:我正在使用Ubuntu 10.10.没有在任何其他平台上尝试过.
在进一步查询之后,我发现模板中的更改确实会实时更新,而无需重新加载应用程序本身.但是,这似乎只适用于传递给的那些模板flask.render_template.
但实际上,在我的应用程序中,我有很多可重复使用的参数化组件,我在Jinja模板中使用它们.它们被实现为{% macro %}s,驻留在专用的"模块"中并被{% import %}编入实际页面.所有不错和DRY ...除了那些导入的模板显然从未检查过修改,因为它们根本没有通过render_template.
(奇怪的是,对于通过调用的模板,这不会发生{% extends %}.至于{% include %},我不知道,因为我没有真正使用它们.)
总而言之,这种现象的根源似乎介于Jinja和Flask或Werkzeug之间.我想这可能需要为这些项目之一的bug追踪者旅行:)同时,我接受了jd.的回答是因为这是我实际使用的解决方案 - 而且它就像一个魅力.