【问题标题】:How to access a list's length in a template's code block for Django?如何在 Django 的模板代码块中访问列表的长度?
【发布时间】:2020-08-09 01:48:07
【问题描述】:

在模板中,我有一个名为“参与者”的列表类型变量。例如,我想检查列表的长度是否等于 2。我尝试了以下方法:

{{ participants | json_script:"participants"}}

{% if participants|length==2 %}

.....
{% endif %}

但是,这不起作用。我得到的错误是:

/chat/lobby/ 处的模板语法错误 无法解析余数:来自“participants.count==2”的“==2”

有人能指出一种在模板代码块中访问列表长度的方法吗?感谢您的时间和考虑!

【问题讨论】:

  • 在@MeL 评论中添加几个点,创建自定义模板过滤器来计算长度。如{% if participants|length:2 %}

标签: python django web backend web-development-server


【解决方案1】:

问题是== 部分周围(缺少)间距。如果您将其重写为

{% if participants|length == 2 %}
…
{% endif %}

模板解析器将不再出错。

话虽如此,渲染逻辑使用了模板,虽然很难说,但看起来这更像是业务逻辑,就像@ 987654321@ 属于视图。

【讨论】:

  • 我喜欢 Django,但不同意这种让模板尽可能愚蠢的“哲学”。这在 2005 年可能是有道理的,但响应式前端开发在 2020 年就完全不同了。你可能会觉得这很方便:pypi.org/project/django-mathfilters
  • 谢谢!我在“==”周围添加了空格,现在可以使用了。
  • @FlipperPA:您还可以使用 Jinja 作为模板引擎,提供“完整的 python”表达能力:jinja.palletsprojects.com/en/2.11.x。您可以将其用作模板引擎,因为您没有必须使用 Django 引擎。
  • 我也是 Jinja2 的忠实粉丝,但有时它有点矫枉过正。 :) 谢谢!
猜你喜欢
  • 2012-10-19
  • 2015-08-18
  • 2021-10-17
  • 2015-05-11
  • 2018-01-17
  • 2011-05-03
  • 2023-03-20
  • 2015-01-08
  • 2019-02-22
相关资源
最近更新 更多