- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
目前正在学习 Django 教程(投票)。
我知道 for 标记允许您循环遍历列表或字典以执行您定义的任何操作。
但是计算 for 标记通过其循环的次数的目的是什么?
此外,循环遍历同一个列表/字典不止一次的例子是什么?
这里有点困惑......
<h1>{{ poll.question }}</h1>
{% if error_message %}
<p><strong>{{ error_message }}</strong></p>
{% endif %}
<form action="{% url 'polls:vote' poll.id %}" method="post">{% csrf_token %}
{% for choice in poll.choice_set.all %}
<input type="radio" name="choice" id="choice{{ forloop.counter }}" value="{{ choice.id }}" />
<label for="choice{{ forloop.counter }}">{{ choice.choice_text }}</label>
<br />
{% endfor %}
<input type="submit" value="Vote" />
</form>
在这种情况下,foorloop.counter
的目的是什么?
最佳答案
模板变量forloop.counter
返回当前 for 循环的当前迭代,从一开始索引。在很多情况下可能会用到这个变量。一个例子是这样的:
<table>
<thead>
<tr>
<th>#</th>
<th>Object</th>
</tr>
</thead>
<tbody>
{% for object in objects %}
<tr>
<td>{{ forloop.counter }}</td> {# Print the number of the list, starting at 1 #}
<td>{{ object }}</td> {# Print object unicode #}
</tr>
{% endfor %}
</tbody>
</table>
将打印一个类似于此的表格(当然带有适当的渲染):
# | Object
------------
1 | Object 3
2 | Object 7
3 | Object 2
请注意,除非对象的 QuerySet 以某种方式排序,否则它们的顺序可能是任意的。对象的id与for循环的迭代次数无关。
还有forloop.counter0
这将返回当前迭代,从 0 开始索引。
虽然您的第二个问题有些不相关,但您可能想要多次遍历列表以在不同部分呈现该列表中的信息。因此,也许您有一个显示有关对象信息的列表,然后在页面下方的另一个列表显示有关该对象的不同信息。
但是,我要说的是,最好尽可能避免多次迭代列表,因为这通常是不必要的。
当然,除非你需要它,否则不要担心使用它,但我想了解它是件好事。
在您更新的示例中 forloop.counter
变量用于区分表单中的选项。所以id
和 for
都等于 choice#
, 其中#
是循环的当前迭代。
id
<input>
的领域标签允许 <label>
标签来识别(通过 for
字段)<input>
它应该显示的标签。否则,标签不知道要显示哪个单选按钮。
文档是这样描述表单的目的的:
The above template displays a radio button for each question choice. The value of each radio button is the associated question choice’s ID. The name of each radio button is "choice". That means, when somebody selects one of the radio buttons and submits the form, it’ll send the POST data choice=# where # is the ID of the selected choice. This is the basic concept of HTML forms.
请注意 forloop.counter
value 仅用于正确显示 HTML 表单,它的值实际上并没有以任何重要方式使用。 forloop.counter
的值与实际选择没有关联,因此您可以看到表单发布了选择的 id
, 而不是 forloop.counter
值(value)。
为了给您更多的说明,这里有一个您不需要需要 forloop.counter
的例子变量。
<table>
<thead>
<tr>
<th>ID</th>
<th>Object</th>
</tr>
</thead>
<tbody>
{% for object in objects %}
<tr>
<td>{{ object.pk }}</td> {# Print the pk of the object #}
<td>{{ object }}</td> {# Print object unicode #}
</tr>
{% endfor %}
</tbody>
</table>
可能会打印一个类似于此的表格(当然有适当的渲染):
ID | Object
------------
3 | Object 3
7 | Object 7
2 | Object 2
在您看来,您可以根据对象的 id/pk 对这个对象列表进行排序,如下所示:
queryset = Object.objects.all().order_by('-pk') # Order all objects by pk in descending order
然后,相同的模板将按如下方式呈现您的表格:
ID | Object
------------
2 | Object 2
3 | Object 3
7 | Object 7
通常情况下,for 循环的每次迭代都做同样的事情,而您并不关心它是哪一次迭代。您从教程中发布的示例很好地使用了 forloop.counter
,但这也不是唯一的方法。您也可以使用选项的 pk
字段,正如我们所知,这对于每个选择都是唯一的。
关于python - forloop.counter 表示 for 标签已经循环了多少次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25330402/
我的模板中有以下代码: {% for f in friendslist %} {% if forloop.first %} // display somethi
我正在使用W3widgets calendar我想通过 Python/Django 动态设置日期。在 JavaScript hook 中输入 value 标签后,它只选择了一个日期,并且有多个日期条目
int lineInputs = 0; cin >> lineInputs; int whatever = 0; char* myArray = new char[arrayElements*line
我想知道如何在 Django 中复制它: for photo in gallery if counter is 1 then use this photo endif
所以我有这个 forLoop,它用导航单元填充屏幕。我想在填充每个元素时为它们设置背景颜色。主要问题是我无法弄清楚将 Canvas 设置为绘图函数的内容,如果这甚至是正确的方法的话。 单元格创建循环:
我想显示数据库中我的所有博客以及订单的最新帖子,所以我尝试 {%for i in post%} {{post.title}} {{post.post_time|date:"Y/m/d"
我正在制作一个事件列表,其中的日期被转换为事件发生前的天数。我希望事件有不同的颜色,更远的更红,更近的更绿。 days 是整数值,我事先检查它是否为 null 或小于 0,然后它为 0。出于某种原因,
首先我要说我不确定这是最好的方法,因此非常感谢其他方法 最终目标:通过调用 woocommerce API 并使用响应数据存储产品列表和购买的浇头 我正在调用 woocommerce REST api
我创建了一个模板标签并尝试循环遍历模板标签的结果但我没有得到任何结果 标签.py from django import template from loadprograms import dbcont
当我运行下面的代码时,它似乎只遍历了列表中所有 worker 列表的一半。然后它跳转到关闭父进程。 我非常困惑,为什么下面的代码没有遍历列表中的所有项目,也许我盯着这个看得太久了,看不出明显的东西?任
我有一个图像循环。 期望的模式: 1 4 5 8 9 12 13 16 2 3 6 7 10 11 14 15 根据 forloop 数,我
下面我尝试显示算法执行的加法次数的下限。请告诉我我的分析是否正确。 这是一个低效算法,用于计算具有 n 个元素的数组 A 的所有 i,j i = n/2,并且内部循环运行了那么多次迭代,因此至少有 (
我想遍历 Django 模板中模型的查询集。我可以简单地使用 Django for loop 来完成,但我不能超过 1 步,这是我的代码 {% for map in maps %} {% if
对不起,如果这是一个愚蠢的问题,但是有人知道如何在 knitr 中循环 R 函数吗?到目前为止,我的问题是将变量从 Latex 传递给 R 函数。我正在尝试做这样的事情: \documentclass
在 django 模板中,我需要使用 forloop.counter0 来访问列表中的元素。例如: {% for foo in bar %} {{data[{{forloop.counter0}
我在 Jekyll 3.2.1 中创建了一个虚拟的“相关帖子”,解决方案如下: {% for post in site.posts limit: 4 %} {% if page.aut
首先是代码: 这是我正在尝试做的事情: 我想将“动物”cookie 的值设置为“(lion)”。 cookie 中应包含的“(lion)”实例数由“qty”GET 参数的值决定。例如,如果页面 ur
我在模板中有循环: {% for item in items %} {{ forloop.counter }}) {{ item.name }} {% endfor
我想弄清楚如何根据我点击的数字从列表框中添加特定数量。我有一个包含 1 天到 14 天数字的列表框。当我点击例如 7 天时,它将显示在我的第二个列表框中从 1 到 7 天。 第一个列表框 privat
这个问题在这里已经有了答案: Chrome/Firefox console.log always appends a line saying 'undefined' (9 个回答) 关闭 4 年前。
我是一名优秀的程序员,十分优秀!