mcfmk
mcfmk

Reputation: 53

Jinja2 {% include file %} outside of search path doesn't work

This is an elementary issue which is probably related to Jinja2 PrefixLoader or ChoiceLoader.

On Python 3.6 we load with this command

jinja2.FileSystemLoader( searchpath= "\\template_folder\\")

On Windows 7, our file structure is as follows.

- folder_bbb
    * subfile.txt
- template_folder
     * template_file
     - folder_aaa
         * subfile.txt

From the template_file we are successful with this command

{% include "folder_aaa/subfile.txt" %} 

Now we wish to move the file one level up, and write

{% include "../folder_bbb/subfile.txt" %}

but that doesn't work, complaining file not found.

What is the correct way to write? Thanks.

Upvotes: 5

Views: 5447

Answers (1)

uǝM ƃuǝℲ 馮文
uǝM ƃuǝℲ 馮文

Reputation: 123

You may specify all paths in the the loader

jinja2.FileSystemLoader(["c:\\template_folder\\", "c:\\folder_bbb\\"])

and refer the including block without a specific path

{% include "subfile.txt" %} 

The path will be searched in order so that as you say, moving the file one level up, the file will be found. (You need the template_folder path for the template itself.)

Upvotes: 5

Related Questions