jinja2 包含带变量的文件



我正在尝试使用 jinja2 重新使用一些非常繁重的模板,但我被困在一个包含上。

这是我期望的行为

<h1>{{ key }} </h1>
{% set file = key | include_text %}
{% include file %}

自定义筛选器返回如下所示的字符串::

texts/my_include.html

但相反,我得到了这个错误

jinja2.exceptions.TemplatesNotFound: Tried to select from an empty list of templates

我已经尝试过的一些技巧:

  • 将模板放在同一个文件夹中,并从返回的字符串中删除"texts/">
  • 在环境加载器中添加路径

但它不断发送此错误

我现在想知道 jinja2 是否允许这种实现,或者我是否必须保持这个模板原样(即使生成需要很长时间(。

有人知道这里的一些技巧吗?

好吧,对于那些最终在未来遇到这个问题的人,我已经通过删除不必要的单引号并在条件未验证时从我的自定义过滤器发送一些空文件来解决它......(我的错误(

这是我的自定义过滤器:

@environmentfilter
def include_text(ctx, key):
res_dict = {
'key_value_1' : 'file_name_1',
'key_value_2' : 'file_name_2'
}
try:
return "texts/" + res_dict[key] + ".html"
except KeyError:
return "texts/empty.html"

现在,我尝试的第一个解决方案工作正常。

最新更新