简体   繁体   中英

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.

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.)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM