Jinja2 {% include file %} 在搜索路径之外不起作用

mcf*_*fmk 5 python jinja2

这是一个基本问题,可能与 Jinja2 PrefixLoader 或 ChoiceLoader 有关。

在 Python 3.6 上,我们使用此命令加载

jinja2.FileSystemLoader( searchpath= "\\template_folder\\")
Run Code Online (Sandbox Code Playgroud)

在 Windows 7 上,我们的文件结构如下。

- 文件夹_bbb
    * 子文件.txt
- 模板_文件夹
     * 模板文件
     - 文件夹_aaa
         * 子文件.txt

从 template_file 中我们可以成功执行此命令

{% include "folder_aaa/subfile.txt" %} 
Run Code Online (Sandbox Code Playgroud)

现在我们希望将文件向上移动一级,并写入

{% include "../folder_bbb/subfile.txt" %}
Run Code Online (Sandbox Code Playgroud)

但这不起作用,抱怨找不到文件。

正确的书写方式是怎样的?谢谢。

小智 5

您可以指定加载器中的所有路径

jinja2.FileSystemLoader(["c:\\template_folder\\", "c:\\folder_bbb\\"])
Run Code Online (Sandbox Code Playgroud)

并引用没有特定路径的包含块

{% include "subfile.txt" %} 
Run Code Online (Sandbox Code Playgroud)

将按顺序搜索路径,以便正如您所说,将文件向上移动一级,将找到该文件。(您需要模板本身的 template_folder 路径。)