我目前在多个不同的子目录中有模板,我想加载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))
Run Code Online (Sandbox Code Playgroud)
然而,这似乎有点hacky.有更好的建议吗?
jd.*_*jd. 29
Jinja确实考虑了子文件夹,但必须使用相对于根文件夹的路径引用模板.
如果我们有mydir/foo/bar.html,这可行:
template_env = jinja2.Environment(loader=jinja2.FileSystemLoader('mydir'))
template_env.get_template('foo/bar.html')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9808 次 |
| 最近记录: |