С нетерпеливой оценкой переменные по существу превращаются в свои значения любое время, которое Вы смотрите на них (для перефразирования). Тем не менее Python действительно имеет встроенным пространства имен . Например, местные жители () возвратят словарь, отображающий имена переменных функции к их значениям, и globals () делает то же для модуля. Таким образом:
for name, value in globals().items():
if value is unknown_variable:
... do something with name
Примечание, что Вы не должны импортировать ничего, чтобы быть в состоянии получить доступ к местным жителям () и globals ().
кроме того, если существует несколько псевдонимов для значения, выполняющего итерации через пространство имен только, находит первый.
Ваш код работает для меня с django 1.0.2 и firefox 3.5.
Вы можете использовать {% else%} вместо {% ifnotequal%} и установить selected = "selected". Надеюсь, это поможет.
<select name="movie">
{% for movie in movies %}
{% ifequal movie.id selected_movie.id %}
<option value="{{movie.key}}" selected="selected">Movie {{movie.id}}: {{movie.name}}</option>
{% else %}
<option value="{{movie.key}}">Movie {{movie.id}}: {{movie.name}}</option>
{% endifequal %}
{% endfor %}
</select>