gpt4 book ai didi

python - jinja2 filesystemloader 加载所有子目录

转载 作者:太空狗 更新时间:2023-10-29 20:33:53 41 4
gpt4 key购买 nike

我目前在多个不同的子目录中有模板,我想加载 jinja2 中的所有模板。似乎只是将 FileSystemLoader 目录指向树的顶部并不会在子文件夹中选取任何内容。

有没有办法让 jinja2 加载所有子目录(只需向下一个级别就可以,但整个树会更可取)?

到目前为止,我已经设法通过选择加载器做到了这一点:

sub_dirs = [os.path.join(template_file_root,dirname) for dirname in os.listdir(template_file_root) 
\ if os.path.isdir(os.path.join(template_file_root, dirname))]

jinja_dirs = [ jinja2.FileSystemLoader(dirname) for dirname in sub_dirs ]

template_env = jinja2.Environment (loader = jinja2.ChoiceLoader(jinja_dirs))

然而,这似乎有点老套。有更好的建议吗?

最佳答案

Jinja 确实考虑了子文件夹,但必须使用相对于根文件夹的路径引用模板。

如果我们有 mydir/foo/bar.html,这有效:

template_env = jinja2.Environment(loader=jinja2.FileSystemLoader('mydir'))
template_env.get_template('foo/bar.html')

关于python - jinja2 filesystemloader 加载所有子目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9641317/

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