如何在 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 循环? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章