2016-02-09 145 views
0

弦数我有整数字段的形式,看起来像这样:根据字段值

items = forms.IntegerField(min_value=1) 

根据此字段的值,应建立相同数量的该字符串:

item = '<Item></Item>' 

我试图for循环来实现这一点:

for item in range(items): 
    item = '<Item></Item>' 

但我有只有一个item字符串。

context = Context({'item':item }) 

我尝试在Python Shell,一切都相同的操作很好地工作:

>>> items = 4 
>>> for item in range(items): 
... item = "item" 
... print item 
... 
item 
item 
item 
item 

我会很感激,如果你帮助我了解为什么会发生。

+0

什么'打印items'的输出?也不要重写中间变量。 –

+0

您每次都在您的for循环中重写项目。你应该把它附加到'context_items.append(item)'这样的列表或连接字符串,比如'item + ='' –

回答

1
item = '' 
for i in range(items): 
    item += '<Item></Item>' 
3

你似乎只是将一个字符串分配给一个变量多次,而不是追加到它。尝试是这样的:

context = Context({'item': ''.join('<Item></Item>' for i in range(items)) }) 

这里有点更可读的方式:

items = [] 
for item in range(items): 
    items.append('<Item></Item>') 

context = Context({'item': ''.join(items) }) 
+0

值得注意的是,你的两个片段会产生不同的输出,一个是字符串,另一个是字符串一个数组 – Sayse

+1

@Sayse,很好,赶上,谢谢!我已经编辑了答案,所以现在两种方式都应该产生相同的输出。 –

+0

我并不是说任何错误,一个数组可能是一件好事(很难说什么操作员想要的)......已经upvoted :) – Sayse