我正在使用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')}}我看到了“类别:电动工具;标题:电动工具”和“类别: av;标题:照相机和音频记录器”,所以我知道宏可以听到我的声音,但是列表本身并没有出现。我可以在比较测试中使用宏参数吗?多么?
发布于 2016-01-14 05:24:24
不需要在块内部使用变量内插语法--您只需按名称引用变量,就像在Python中那样:
{# Do this #}
{% if row.Category == cat %}
{# Instead of this #}
{% if row.Category == "{{ cat }}" %}https://stackoverflow.com/questions/34780008
复制相似问题