模板应该在蓝图模板文件夹还是全局模板文件夹中?

时间:2015-10-13 15:03:40

标签: python flask jinja2

我看到有两种方法可以在项目中构建模板。模板可以存储在蓝图中的templates/文件夹中,或者每个蓝图在全局模板文件夹中都有一个文件夹。这两者之间的区别是什么?为什么我要用一个而不是另一个?

app/
    blueprint1/
        __init__.py
        views.py
        templates/
    blueprint2/
        __init__.py
        views.py
        templates/
    templates/  # Global templates folder
app/
    blueprint1/
        __init__.py
        views.py
    blueprint2/
        __init__.py
        views.py
    templates/  # Global templates folder
        blueprint1/
        blueprint2/

1 个答案:

答案 0 :(得分:4)

两者在Flask所看到的方面是相同的,它的Jinja加载器结合了蓝图和全局文件夹。蓝图模板被视为默认源,全局源会覆盖这些源。通常情况下,蓝图模板仅在您编写其他人将安装和覆盖的扩展程序时才有用,如果您只是在内部使用它们,它就不会提供任何内容。请注意,您需要在蓝图和全局文件夹中使用相同的文件夹结构,否则您将看到意外冲突,因为加载程序直接覆盖文件夹,而不是蓝图名称。

project/
    package/
        __init__.py
        blueprint1/
            __init__.py
            templates/
                blueprint1/
                    page.html  # default
        templates/
            blueprint1/
                page.html  # overrides blueprint