Я использую Django для создания сайта в основном, чтобы узнать что-то о websie building.And я наткнулся на что-то я думал, что это strange.I этот код ниже:Джанго все объекты с конкретным пользователем информация для ошибки контура
all_words=Word.objects.all()[0:100]
user=request.user
wordlist = []
//wordinfo = {} --->This doesn't work
for word in all_words:
wordinfo = {}//This works fine
taged_word = FlagWord.objects.filter(word = word,user = user)
if taged_word :
wordinfo['usertag'] = True
else:
wordinfo['usertag'] = False
wordinfo['word'] = word
wordlist.append(wordinfo)
Обратите внимание на то, где находится wordinfo
. Я думаю, что оба будут работать, потому что последнее содержимое заменит предыдущий в любом случае. Но когда он находится за пределами цикла for
, я бы получил 100 элементов в wordlist
, которые все одинаковы. word
собственность все будет последней word
в all_words
.
Я знаю, что если wordinfo
находится в петле for
, новый wordinfo
будет created.But вопрос я думаю, если оно находится за пределами цикла for
, он также должен work.Can кто-нибудь объяснить мне, в чем разница? Почему он не может быть помещен за рамки for
?
что не работает, когда вы размещаете 'wordinfo = {}' за пределами 'for' цикла? – dm03514