【问题标题】:Filter in Django if template tag not working如果模板标签不起作用,则在 Django 中过滤
【发布时间】:2012-10-27 20:26:00
【问题描述】:

我几乎完全掌握了 django docs 中的内容

{% if things|length > 1 %}

    <div>
        <span>Multiple things were found for this search criteria</span>
        <button>Show All</button>
    </div>
{% endif %}

然而,当things|length 为 0 时,div 会显示出来。

我使用的是 Django 1.3.1,所以我不知道这是否是问题所在——我找不到该信息。至少,它不在 1.4 发行说明中。

这到底是怎么回事?这是 1.3 的问题,还是...?

编辑:看起来这确实是在1.2 中引入的,应该可以工作。那么有什么关系呢?

【问题讨论】:

  • 行程是一个查询集对象吗?
  • 您能发布一下您是如何获得行程的吗?
  • 你的意思是我的视图代码?我实际上是在设置 results = {itineraries=[]},循环遍历其他内容并将 dicts 附加到它,然后将结果传递给模板。
  • 你确定itineraries|length 是0?你如何在模板中传递它。顺便说一句,results = {itineraries=[]}SyntaxError: invalid syntax。也许你的意思是results = {itineraries:[]}
  • 这就是我的意思,谢谢。 {{ itineraries|length }} 呈现 0

标签: django django-templates django-template-filters


【解决方案1】:

试试 {% if itineraries.items|length > 1 %} ... {% endif %} 或仅 {% if itineraries %}

【讨论】:

  • 我忘记了我拥有此代码的模板部分是在传入行程之前渲染的,因此没有行程(我假设 Django 模板将其视为行程=无),尽管@ 987654322@ 呈现为 0,它一定被像 '' 一样对待。
  • 显然这是一个奇怪的设计问题...python.6.n6.nabble.com/…
猜你喜欢
  • 2011-04-28
  • 2016-03-22
  • 1970-01-01
  • 2018-05-04
  • 2021-03-07
  • 2013-04-02
  • 2020-02-16
  • 1970-01-01
  • 2012-08-23
相关资源
最近更新 更多