python - 在 Jinja2 中使用变量名称作为 block 名称?

标签 python flask jinja2

我有以下模板“base.html”

{% set list_of_ids = ['id1', 'id2', 'id3'] %}
{% for id in list_of_ids %}
  <div class="content">
    {% block id %}
    {% endblock %}
  </div>
{% endfor %}

是否可以在另一个模板“id1.html”中执行此操作

{% extends "base.html" %}

{% block id1 %}
   <p>This is my content for id1 block! Different from id2 and id3 blocks</p>
{% endblock %}

最佳答案

这是不可能的。 block 名称已经是名称,您不能从变量中为它们分配名称。

include 可以采用变量。解决方案是包含不同的模板名称并定义模板本身,而不是模板中的 block 。

base.html:

{% for id in ids %}
    {% include 'id' ~ id ~ '.html' %}
{% endfor %}

id1.html:

<p>id1 content</p>

关于python - 在 Jinja2 中使用变量名称作为 block 名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44703850/

相关文章:

python - pandas 数据框中的条件

python - 覆盖 res.users 的 create 方法以在创建时将用户添加到组中

python - 如何处理具有多个蓝图的 flask 中的登录?

ansible - 条件 "when: var | d()"在 Ansible 2.5 中意味着什么

python - Jinja 嵌套渲染可变内容

python - 顺序 SHA 256 哈希为相同的输入提供不同的输出

python - 如何在 Deviare 挂机时跳过通话?

python - 如何使用 Python 生成 html 目录列表

python - Flask WTForms Integerfield 类型是文本而不是数字

python - 如何在 jinja2 中设置可选参数