首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在jinja中将宏参数传递给if ==测试?

在jinja中将宏参数传递给if ==测试?
EN

Stack Overflow用户
提问于 2016-01-14 01:08:11
回答 1查看 2.9K关注 0票数 0

我正在使用Tarbell发布库存电子表格的格式化版本。每一行都有一个类别,所以我可以这样做:

代码语言:javascript
复制
<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齿轮的列表。我想把它移到一个宏中,我可以用几个参数调用这个宏。我有这个:

代码语言:javascript
复制
  {% 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 %}

当我用:

代码语言:javascript
复制
  {{ list('av', title='Cameras and Audio Recorders')}}
  {{ list('powertools', title='Power Tools')}}

我看到了“类别:电动工具;标题:电动工具”和“类别: av;标题:照相机和音频记录器”,所以我知道宏可以听到我的声音,但是列表本身并没有出现。我可以在比较测试中使用宏参数吗?多么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-14 05:24:24

不需要在块内部使用变量内插语法--您只需按名称引用变量,就像在Python中那样:

代码语言:javascript
复制
{# Do this #}
{% if row.Category == cat %}

{# Instead of this #}
{% if row.Category == "{{ cat }}" %}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34780008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档