【问题标题】:jinja2: get first item in list whether list exists or notjinja2:无论列表是否存在,都获取列表中的第一项
【发布时间】:2017-03-16 20:55:31
【问题描述】:

对于下面的第一行,jinja2 模板呈现x 是否存在。但是,在第二行中,模板仅在 x 是现有列表时呈现。如果不是,我会收到错误消息(假设 x 存在,它始终是一个包含至少一个项目的列表):

<p>x: {{ x }}</p>

<p>x[0]: {{ x[0] }}</p>
UndefinedError: 'x' is undefined

有没有比我这里更好的方法来检查变量是否存在并获取它的第一项(我有大量 x 的实例在我的模板中有更长的名称,我宁愿不包装它每次都使用 if 子句):

{% if x %}
  <p>x[0]: {{ x[0] }}</p>
{% endif %

【问题讨论】:

    标签: html flask jinja2


    【解决方案1】:

    Jinja 支持内联 if else 语句,并且与 Python 不同,它还允许省略 else

    {{ x[0] if x }}
    

    【讨论】:

      【解决方案2】:

      也许可以尝试返回一个列表列表并对其进行迭代,这样您就只需编写一次“变量检查”。

      类似的东西:

      {% for x in list %}
          {% if x %}
              <p>x[0]: {{ x[0] }}</p>
          {% endif %}
      {% endfor %}
      

      【讨论】:

        【解决方案3】:

        这两种方法都可以解决

        {{ x[0] }}
        

        或者——

        {{ x|first }}
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-12-27
          • 2017-11-05
          • 1970-01-01
          • 2019-02-13
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多