【发布时间】:2012-03-27 07:58:45
【问题描述】:
我目前在多个不同的子目录中有模板,我想在 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))
不过,这似乎有点骇人听闻。有更好的建议吗?
【问题讨论】: