如何在 Django 模板中使用这个 for 循环? [关闭]

Posted

技术标签:

【中文标题】如何在 Django 模板中使用这个 for 循环? [关闭]【英文标题】:How to use this for loop in Django template? [closed] 【发布时间】:2012-11-24 08:08:33 【问题描述】:

这是我在 Stack Overflow 上的第一篇文章。我有这个循环,它在 Python 本身中运行良好。

for i, j in enumerate(ls.split("/")):
    print i * " " + j

我想在 Django 模板中实现相同的功能。以下是我认为我会做的:

% for i, j in enumerate(ls.split("/")) %
% i * " " + j %
% end for %

但这不起作用。我从views.py 中得到ls 变量。 i and j 变量是在实现 for 循环时组成的。谢谢

【问题讨论】:

*** 上的问题应该对其他人有价值。因此,在提出真正的问题之前,您应该做一些研究。您的问题表明您并没有真正阅读 Django 的模板文档。没有一个例子看起来像这样。需要强调的是,您不能在这些文档中的模板中进行计算。 【参考方案1】:

您似乎没有阅读过任何有关 Django 模板的文档。你应该在提问之前这样做。

Django 的模板语言是有意限制的。它不是 Python。您不能在其中进行任意函数调用。这类事情必须在视图中完成,或者可能在自定义模板标签中完成。

【讨论】:

可以在视图中做。但是不可能将for循环的结果存储在变量中,然后在模板中调用,是吗?所以事实证明这是我唯一的选择。 我不明白评论。当然可以在视图中进行循环,将结果存储在列表中,然后将其传递到模板中进行迭代。或者,您可能只想在视图中进行拆分,并在模板中使用forloop.counter 对其进行迭代以计算出多少个空格。 或者,你可能会认为html中的多个空格无论如何都被折叠成一个,所以使用嵌套的ul/li标签来格式化你的项目。 好的。我已经完成了列表理解,将结果存储在一个变量中。我现在卡在模板中的格式中。 另外,我没说不能在视图中做for循环。【参考方案2】:

我认为应该是这样的:

% for i, j in data_supplied_to_template %
     i * " " + j 
% endfor %

注意endfor 关键字和模板替换的双括号语法。

现在你必须将你需要的数据放入data_supplied_to_template 变量中,你将它交给模板引擎进行渲染。

一些额外的建议包括为变量使用更好的 nanes(i、j 通常为整数和索引保留)

请参阅template documentation 了解更多信息。

【讨论】:

不正确!没用。 @user1881957:你是对的。您的代码有几个问题,我想向您展示对模板语法的必要更改。请注意我的编辑,并研究 Django 项目中的示例和文档。一旦你掌握了这个概念,它实际上很容易使用。

以上是关于如何在 Django 模板中使用这个 for 循环? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django 模板语言中正确构建 for 循环

如何在 django 模板中从 for 循环中转义一行

如何打破 Django 模板中的“for循环”

Django模板中的for循环

如何在 django 模板的 for 循环中加载图像?

如何从 django 模板中的 for 循环中获取特定的 id?