为什么在Django视图中我只能获取for循环的最后一个值?
假设:
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 %}