为什么在Django视图中我只能获取for循环的最后一个值?

-1 投票
2 回答
504 浏览
提问于 2025-04-18 11:17

假设:

y = [go, cat, jump, see]

如果我这样做:

视图:

  for x in y:
      x

模板:

   {{x}}

我只会得到x=see,没有其他结果,1. 这是为什么呢?2. 我该怎么才能让它正常工作?我知道在模板里这样做是可以的,但我还需要查找数组或字典中每个项目的一些值(除非,这也可以在模板里完成)。有什么想法吗?

编辑。

我有这个:session = {4,5,6,7,},它保存在一个会话中,来自一个满是复选框选择的表单,这些都是主键。

视图:

 form = inlinefactory_formset(model1, model 2,extra = len(sesssion)
 formset = form(instance=None )

在我的视图中,我有这个:

{% for x in session%}
    {{x}} {{formset}}   
    {%endfor%}

所以它打印出数字和一个对应数字的表单。这几乎就是我想要的,x是一个主键,就像我之前提到的,我想用这个主键查找x实例的名称,并把它和表单一起打印出来,这样大家就知道他们正在编辑哪个表单。

2 个回答

0

在这个for循环里面,x的值会被更新。所以当循环结束后,x的值就是列表中的最后一个值。

你想要做的是在模板中遍历这个列表:

{% for x in y %}
   {{ x }}
{% endfor %}
1

我觉得在你的视图里,你是这样做的,

for x in y:
   print x

然后你是这样渲染上下文的,

render(request, "some.html", {"x": x} )

但是上面的做法只会取最后一个值。

试试这样做,

render(request, "some.html", {"y": y} )

在你的模板里,

{% for x in y%}
    {{ x }}
{% endfor %}

撰写回答