Django 模板语言:使用带有 else 的 for 循环

Posted

技术标签:

【中文标题】Django 模板语言:使用带有 else 的 for 循环【英文标题】:Django Template Language: Using a for loop with else 【发布时间】:2013-04-23 15:40:52 【问题描述】:

在 Django 模板语言中是否可以使用带有 for 循环的 else 子句?我相信我可以在 for 循环之前使用 if 检查,但这会重复。

python for-else

list = []

for i in list:
    print i
else:
    print 'list is empty'

Django 模板 for-else(我的猜测)

<h1> game.title</h1>

<table>
    <tr> 

% for platform in game.platform_set.all %       
    <td> platform.system  -- $ platform.price</td> 
% else %
    <td>No Platforms</td>
% endfor %

    </tr>
</table>

<a href="% url 'video_games:profile' game.id %"></a> 

【问题讨论】:

mipadi 对“查找项目列表是否为空”的问题的回答是正确的,但 OP 错误地使用了for..else。 Django 模板for..empty - empty 表示for循环没有任何项目。而 Python for..else - else 表示 for 循环没有退出(中断)。 另外,您不应该将列表命名为“列表”!在list = [] 之后,您将无法拨打list() 【参考方案1】:

使用for...empty,它基本上与Django 等效(将else 关键字替换为empty)。

【讨论】:

正如 Andrew 所说(在对该问题的评论中),for..empty 是 OP 所要求的,但 for..else 在 Python 中的作用完全不同。 【参考方案2】:

我知道这是一篇很老的帖子。添加答案以供将来参考。没有明确的方法来实现for..else,但我们可以执行以下操作。

% for x in some_list %
    ... awesome html and more here
    
    % if forloop.last %
        ... executes only if this is the last time through the loop
    % endif %

% endfor %

希望这会有所帮助。更多阅读here

【讨论】:

以上是关于Django 模板语言:使用带有 else 的 for 循环的主要内容,如果未能解决你的问题,请参考以下文章

Django模板语言(DTL)基础

Django 模板语言 - 带有 Javascript 索引的 Python 数组

以 Django 模板语言快速运行 if 语句

Jinja2模板语言

Django 2021年最新版教程26模板语言 前端if判断怎么用 实例

Django(28)Django模板介绍