Я столкнулся со странной проблемой в моем приложении django, когда цикл for пропускает все остальные элементы. Я взял возвращенный набор запросов и list()
ed для итерации. Смысл этого состоит в том, чтобы удалить элементы, которые находятся внутри другого списка, который передается в представление через переменную POST. Это представление является запросом ajax и возвращает список элементов JSON, которые необходимо отправить на страницу. при следующем запросе страница передает список идентификаторов объектов, которые уже находятся на странице, поэтому я могу удалить их из набора запросов и вернуть только новые. Я поместил несколько операторов print по всей проблемной части кода и выяснил, что при первом запросе со страницы список появляется на странице пустым, потому что там ничего не отображается. Запрос выполняется и возвращает все результаты, которые затем отображаются на странице. По второму запросу список попадает на страницу со всеми идентификаторами, и вот здесь возникает проблема: когда я перебираю набор запросов, проверяя, есть ли идентификаторы в списке, он перебирает только нечетные значения (которые удаляются) и возвращает список четных идентифицированных объектов для повторного отображения на странице.
код:
items = list(listobj.getItems())
temp = items
print "Item List: ", temp
print "Rendered List: ", request.POST['rendered'].split(',')
for item in temp:
print "Item ID: ", str(item.id)
print "Rendered List: ", request.POST['rendered'].split(',')
if str(item.id) in request.POST['rendered'].split(','):
items.remove(item)
print "Removed Item: ", item.id
print "Unrendered Items: ", [item.id for item in items]
Результаты:
[02/Aug/2011 20:17:25] "GET /list/list HTTP/1.1" 200 6256
Item List: [<Item: Item object>, <Item: Item object>, <Item: Item object>, <Item: Item object>, <Item: Item object>, <Item: Item object>, <Item: Item object>, <Item: Item object>, <Item: Item object>]
Rendered List: [u'']
Item ID: 1
Rendered List: [u'']
Item ID: 2
Rendered List: [u'']
Item ID: 3
Rendered List: [u'']
Item ID: 4
Rendered List: [u'']
Item ID: 5
Rendered List: [u'']
Item ID: 6
Rendered List: [u'']
Item ID: 7
Rendered List: [u'']
Item ID: 8
Rendered List: [u'']
Item ID: 9
Rendered List: [u'']
Unrendered Items: [1, 2, 3, 4, 5, 6, 7, 8, 9]
[02/Aug/2011 20:17:25] "POST /items/ HTTP/1.1" 200 528
Item List: [<Item: Item object>, <Item: Item object>, <Item: Item object>, <Item: Item object>, <Item: Item object>, <Item: Item object>, <Item: Item object>, <Item: Item object>, <Item: Item object>]
Rendered List: [u'1', u'2', u'3', u'4', u'5', u'6', u'7', u'8', u'9']
Item ID: 1
Rendered List: [u'1', u'2', u'3', u'4', u'5', u'6', u'7', u'8', u'9']
Removed Item: 1
Item ID: 3
Rendered List: [u'1', u'2', u'3', u'4', u'5', u'6', u'7', u'8', u'9']
Removed Item: 3
Item ID: 5
Rendered List: [u'1', u'2', u'3', u'4', u'5', u'6', u'7', u'8', u'9']
Removed Item: 5
Item ID: 7
Rendered List: [u'1', u'2', u'3', u'4', u'5', u'6', u'7', u'8', u'9']
Removed Item: 7
Item ID: 9
Rendered List: [u'1', u'2', u'3', u'4', u'5', u'6', u'7', u'8', u'9']
Removed Item: 9
Unrendered Items: [2, 4, 6, 8]
[02/Aug/2011 20:17:55] "POST /items/ HTTP/1.1" 200 252