从Flask 0.8开始,设计图将指定的template_folder添加到应用程序的搜索路径中,而不是将每个目录都视为单独的实体。这意味着,如果你有两个具有相同文件名的模板,则在搜索路径中找到的第一个模板就是所使用的模板。公认的是,这令人困惑,并且目前尚无记录。看来你并不是唯一对此行为感到困惑的人。
这种行为的设计原因是,可以轻松地从主应用程序的模板中覆盖蓝图模板,这些模板是Flask模板搜索路径中的第一行。
我想到两个选择。
- 将每个index.html文件重命名为唯一的(例如
admin.html
和main.html
)。 - 在每个模板文件夹中,将每个模板放在blueprint文件夹的子目录中,然后使用该子目录调用模板。例如,你的管理模板将是
yourapp/admin/pages/admin/index.html
,然后从蓝图中以调用render_template('admin/index.html')。



