gpt4 book ai didi

python - 如何在 Jinja2 中包含具有相对路径的模板

转载 作者:太空狗 更新时间:2023-10-29 17:48:44 26 4
gpt4 key购买 nike

我正在尝试在模板中包含同一文件夹中的另一个模板。为此,我只是在执行 {% import 'header.jinja2' %}。问题是我不断收到 TemplateNotFound 错误。

我的模板文件夹看起来像

+ myProject
|
+--+ templates
|
+--+ arby
| |-- header.jinja2
| |-- footer.jinja2
| +-- base.jinja2
|
+--+ bico
|-- header.jinja2
|-- footer.jinja2
+-- base.jinja2

因此,当我渲染 arby 的“base.jinja2”时,我想包含“arby/header.jinja2”,而当我渲染 bico 的“base.jinja2”时,我想包含“bico/header.jinja2”。问题是我不想在 {% include 'arby/base.jinja2' %} 中写 'arby/' 或 'bico/' 前缀。这可能吗?

谢谢

最佳答案

jinja2.Environment.join_path()中有提示关于子类化 Environment 和重写 join_path() 方法以支持相对于当前(即 join_path 的 parent 参数)模板的 import 路径的文档字符串。

这是一个这样的类的例子:

class RelEnvironment(jinja2.Environment):
"""Override join_path() to enable relative template paths."""
def join_path(self, template, parent):
return os.path.join(os.path.dirname(parent), template)

关于python - 如何在 Jinja2 中包含具有相对路径的模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8512677/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com