在 Flask 中,似乎有两种定义模板的方法:
应用级:
app/ templates/ index.html user/ index.html
和蓝图级别:
app/ user/ templates/ index.html templates/ index.html
两者似乎都有效,但一个比另一个更好吗?如果不是,每种方法的优点/缺点是什么?
关于蓝图的文档并不多,因此我们将不胜感激。
我认为缺点确实取决于您的计划,以及您将使用应用程序做什么。如果您将在蓝图级别中有模板,那么您的应用程序会更加灵活,以防您想将蓝图从一个应用程序移动到另一个应用程序并且仍然将所有内容都放在一个地方。不要认为除了您的需求和应用程序架构之外应该有其他东西。
此外,您还可以为您的应用程序完全覆盖 jinja2 模板加载器,并在您想要的目录中包含模板 :) 因此,如果您不喜欢现在的方式,您可以将所有模板移动到您真正想要的目录中。像这样的东西:
import jinja2
my_loader = jinja2.ChoiceLoader([
app.jinja_loader,
jinja2.FileSystemLoader(['templates/somwehere',
'templates/another_place',
'apps/templates']),
])
app.jinja_loader = my_loader
请记住,顺序在这里很重要。