在Flask中,似乎有两种定义模板的方法:
应用级:
app/
templates/
index.html
user/
index.html
蓝图级:
app/
user/
templates/
index.html
templates/
index.html
两者似乎都有效,但是比另一个好吗?如果没有,每种方法的好处/缺点是什么?
蓝图上没有很多文档,所以非常感谢任何帮助。
答案 0 :(得分:3)
我认为缺点实际上取决于你的计划,你会用app做什么。如果您将拥有蓝图级别的模板,那么您的应用程序会更灵活,以防您想要将蓝图从一个应用程序移动到另一个应用程序并且仍然将所有内容放在一个位置。除了你的需求和应用程序架构之外,不要认为应该有别的东西。
此外,你可以完全覆盖你的应用程序的jinja2模板加载器,并在你想要的目录中有模板:)所以你可以将所有模板移动到你真正想要的目标,如果你不喜欢它现在的方式。像这样:
import jinja2
my_loader = jinja2.ChoiceLoader([
app.jinja_loader,
jinja2.FileSystemLoader(['templates/somwehere',
'templates/another_place',
'apps/templates']),
])
app.jinja_loader = my_loader
请记住,订单在这里很重要。