jinja2包含变量的文件

时间:2018-09-18 13:00:50

标签: python django-templates jinja2

我试图用jinja2重新引用一些非常繁重的模板,但我被困在一个include中。

这是我期望的行为

<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 /”
  • 在Env加载程序中添加路径

但是它一直在发送此错误

我现在想知道jinja2是否允许该实现,或者我是否必须保持此模板的原样(即使生成时间很长)。

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

1 个答案:

答案 0 :(得分:0)

对于那些最终在未来遇到此问题的人,我已经解决了它,方法是删除不必要的单引号,并在未验证条件的情况下通过自定义过滤器发送一些空文件...(我的错误)

这是我的自定义过滤器:

  @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"

现在,我尝试的第一个解决方案效果很好。