将宏参数传递给 jinja 中的 if == 测试?
Passing a macro argument to an if == test in jinja?
我正在使用 Tarbell 发布库存电子表格的格式化版本。每行都有一个类别,所以我可以这样做:
<h2>Power Tools</h2>
{% for row in inventory %}
{% if row.Category == "powertools" %}
<b>{{ row.Display_Name|e }}</b> <br />
{% endif %}
{% endfor %}
<h2>A/V Gear</h2>
{% for row in inventory %}
{% if row.Category == "av" %}
<b>{{ row.Display_Name|e }}</b><br />
{% endif %}
{% endfor %}
获取所有电动工具的列表,然后是 A/V 齿轮的列表。我想把它移到一个宏中,我可以用几个参数调用它。我有这个:
{% macro list(cat, title='') -%}
<p>Category: {{ cat }}; Header: {{ title }}</p>
{% for row in inventory %}
{% if row.Category == "{{ cat }}" %}
<b>{{ row.Display_Name|e }}</b><br />
{% endif %}
{% endfor %}
{%- endmacro %}
当我调用它时:
{{ list('av', title='Cameras and Audio Recorders')}}
{{ list('powertools', title='Power Tools')}}
我按预期看到 "Category: powertools; Header: Power Tools" 和 "Category: av; Header: Cameras and Audio Recorders",所以我知道宏可以听到我的声音,但列表本身没有显示。我可以在比较测试中使用宏参数吗?怎么样?
块内不需要变量插值语法 - 您可以像在 Python:
中那样按名称引用变量
{# Do this #}
{% if row.Category == cat %}
{# Instead of this #}
{% if row.Category == "{{ cat }}" %}
我正在使用 Tarbell 发布库存电子表格的格式化版本。每行都有一个类别,所以我可以这样做:
<h2>Power Tools</h2>
{% for row in inventory %}
{% if row.Category == "powertools" %}
<b>{{ row.Display_Name|e }}</b> <br />
{% endif %}
{% endfor %}
<h2>A/V Gear</h2>
{% for row in inventory %}
{% if row.Category == "av" %}
<b>{{ row.Display_Name|e }}</b><br />
{% endif %}
{% endfor %}
获取所有电动工具的列表,然后是 A/V 齿轮的列表。我想把它移到一个宏中,我可以用几个参数调用它。我有这个:
{% macro list(cat, title='') -%}
<p>Category: {{ cat }}; Header: {{ title }}</p>
{% for row in inventory %}
{% if row.Category == "{{ cat }}" %}
<b>{{ row.Display_Name|e }}</b><br />
{% endif %}
{% endfor %}
{%- endmacro %}
当我调用它时:
{{ list('av', title='Cameras and Audio Recorders')}}
{{ list('powertools', title='Power Tools')}}
我按预期看到 "Category: powertools; Header: Power Tools" 和 "Category: av; Header: Cameras and Audio Recorders",所以我知道宏可以听到我的声音,但列表本身没有显示。我可以在比较测试中使用宏参数吗?怎么样?
块内不需要变量插值语法 - 您可以像在 Python:
中那样按名称引用变量{# Do this #}
{% if row.Category == cat %}
{# Instead of this #}
{% if row.Category == "{{ cat }}" %}