【问题标题】:Jinja multiple rendering streamsJinja 多渲染流
【发布时间】:2012-03-19 06:22:12
【问题描述】:

在 jinja 模板中有什么方法可以同时渲染到多个流?

假设我想呈现一个(可打印的)测验,首先是所有问题,然后是最后的所有答案。每种类型的问题(多项选择、匹配、缺失单词)都是不同的模板。

显然,我可以通过两次并在单独的模板中进行问答。但我想一次性做到这一点,以保持模板井井有条,也使python调用代码更规则,没有特殊情况来处理这种情况)。

我想要多个“流”之类的东西,类似于块,但它会累积多个模板的输出。显然下面是幻想,但是在 jinja 中还有其他方法可以做到这一点吗?

{% streams x, y %}  {# define twp streams x and y #}
{% stream x %}
aaaa
{% endstream %}

{% stream y %}
bbbb
{% endstream %}

{% stream x %}
cccc
{% endstream %}

{% stream y %}
dddd
{% endstream %}

{{ x }}  {# renders aaaacccc #}
{{ y }}  {# renders bbbbdddd #}

【问题讨论】:

    标签: stream jinja2


    【解决方案1】:

    无法渲染到多个流。一个简单的解决方案是调用模板两次,使用 question 布尔参数,并使用 if 表达式在问答代码之间切换:

    {% if questions %}
    aaaa
    {% else %}
    bbbb
    {% endif %}
    
    {% if questions %}
    cccc
    {% else %}
    dddd
    {% endif %}
    

    然后你调用模板:

    questions_html = template.render(questions=True)
    answers_html = template.render(questions=False)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-16
      • 2020-10-04
      • 2016-05-09
      • 2017-01-11
      • 2018-05-28
      • 1970-01-01
      相关资源
      最近更新 更多