2013-08-26 5 views
3

У меня есть сайт с Jinja2 в Google App Engine, поэтому версия 2.6. В какой-то момент я прокручиваю список для создания переключателей, и я бы хотел, чтобы первый из них был установлен по умолчанию. Мой код выглядит следующим образом:Jinja2 не возвращает переменные цикла

 {% for publisher in publishers %} 
     <tr onclick="doNav('/spt/publisher/{{ publisher.id }}');" style="cursor: pointer;"> 
      <td>{{ publisher.name }}</td> 
      <td>{{ publisher.songs }}</td> 
      <td><input form="export_publisher_form" onclick="event.cancelBubble = true;" 
         type="radio" name="export_publisher" value="{{ publisher.id }}"{% if loop.first %} checked{% endif %}></td> 
     </tr> 
    {% endfor %} 

Проблема, дзиндзя, кажется, не возвращает никакого значения для loop.first, ни какой-либо переменной цикла (я пробовал с loop.index, loop.length и loop.cycle). Я делаю что-то неправильно ?

Edit: издателей является список, который выглядит следующим образом (с отступом для ясности):

[{'id': 4974053165105152L, 'name': u'BMG', 'songs': 1}, 
{'id': 5888297083600896L, 'name': u'Emi', 'songs': 2}, 
{'id': 6099953071947776L, 'name': u'Ninja Tune', 'songs': 1}, 
{'id': 4762397176758272L, 'name': u'Sony', 'songs': 0}, 
{'id': 5325347130179584L, 'name': u'Universal', 'songs': 0}, 
{'id': 4815173734891520L, 'name': u'Warner', 'songs': 0}] 
+1

хммм ... не вижу ничего плохого с кодом jinja2. Можете ли вы показать ценности издателей? –

+1

Спасибо за ответ Андрей. Я не знаю, если вы получите уведомление, что я отредактировал вопрос, так что я тоже отвечаю. :) –

ответ

1

Weird ... какая версия Python вы используете? Когда я выполняю этот код, я получаю следующий вывод:

{% for publisher in heater %} 
    <tr onclick="doNav('/spt/publisher/{{ publisher.id }}');" style="cursor: pointer;"> 
     <td>{{ publisher.name }}</td> 
     <td>{{ publisher.songs }}</td> 
     <td><input form="export_publisher_form" onclick="event.cancelBubble = true;" 
        type="radio" name="export_publisher" value="{{ publisher.id }}"{% if loop.index == 2 %} checked{% endif %}></td> 
    </tr> 
{% endfor %} 

Я проверяю Emi 2. Что вы видите?

Я также изменил свои данные следующим образом:

data = [{'id': 4974053165105152, 'name': 'BMG', 'songs': 1}, 
       {'id': 5888297083600896, 'name': 'Emi', 'songs': 2}, 
       {'id': 6099953071947776, 'name': 'Ninja Tune', 'songs': 1}, 
       {'id': 4762397176758272, 'name': 'Sony', 'songs': 0}, 
       {'id': 5325347130179584, 'name': 'Universal', 'songs': 0}, 
       {'id': 4815173734891520, 'name': 'Warner', 'songs': 0}] 
+0

А - Я вижу, что вы сказали python 2.6. Я повторил код с этой версией python и получил те же успешные результаты. FYI: Я тестирую с использованием черри 3.2.4. –

+1

Я использую Python 2.7. 2.6 - версия Jinja2, которая поддерживается GAE. –

+0

Странно, что вы проверяете Эми. Это должен быть первый элемент. Я настрою новую учетную запись GAE для тестирования завтра, проблема должна быть связана с моим приложением, но я понятия не имею, как это сделать. –