这是一个基本问题,可能与 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 路径。)