2013-08-26 102 views
3

我有一个在Google App Engine上有Jinja2的网站,所以版本是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 )。难道我做错了什么 ?

编辑:出版商的是,像这样的列表(缩进为清楚起见):你使用的是什么版本的Python

[{'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

奇怪...?当我执行此代码时,我得到以下输出:

{% 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

啊 - 我看你说蟒蛇2.6。我重试了该版本的Python代码,并获得了相同的成功结果。仅供参考:我正在使用cherrypy 3.2.4进行测试。 –

+1

我正在使用Python 2.7。 2.6是GAE支持的Jinja2版本。 –

+0

你让Emi检查很奇怪。它应该是第一个元素。我将设置一个新的GAE帐户来明天进行测试,问题必须与我的应用程序相关联,但我完全不知道如何。 –