通过字典值迭代对我来说不适用于GAE上的Django

时间:2011-06-09 14:08:50

标签: python django google-app-engine

数据是来自django.utils.datastructures import SortedDict

的已排序字典
{'test1': '-10', 'quiz1': '65', 'quiz2': '40', 'quiz3': '55'}

此模板代码:

{% for key1 in Data %}
       <td>key: {{ key1|capfirst }} - value: {{Data.key1}} - Data: {{ Data }}</td>
{% endfor %}

收率:

key: Quiz1 - value: - Data: {'test1': '-10', 'quiz1': '65', 'quiz2': '40', 'quiz3': '55'}

key: Quiz2 - value: - Data: {'test1': '-10', 'quiz1': '65', 'quiz2': '40', 'quiz3': '55'}

key: Quiz3 - value: - Data: {'test1': '-10', 'quiz1': '65', 'quiz2': '40', 'quiz3': '55'}

key: Test1 - value: - Data: {'test1': '-10', 'quiz1': '65', 'quiz2': '40', 'quiz3': '55'}

我在Doc中尝试过不同的例子,但我被困住了。

编辑:

我试过这段代码:

<table border="1">
<tr>
    {% for key1 in Data %}
        <td>{{ key1|capfirst }}</td>
    {% endfor %}
</tr>
<tr>
    {% for key2 in Data %}
        <td>key: {{ key2|capfirst }}| Data: {{Data.key2}}| Static Keyed: {{ Data.quiz1 }}| AllData: {{ Data }}</td>
    {% endfor %}
</tr>
<tr>
    {% for key,value in Data %}
        <td>key: {{key}}: value: {{value}}</td>
    {% endfor %}
</tr>
</table>

这就是结果:

<table border="1">
<tr>
        <td>Quiz1</td>
        <td>Quiz2</td>
        <td>Quiz3</td>
        <td>Test1</td>
</tr>
<tr>
    <td>key: Quiz1| Data: | Static Keyed: 65| AllData: {'test1': '56', 'quiz1': '65', 'quiz2': '75', 'quiz3': '25'}</td>
    <td>key: Quiz2| Data: | Static Keyed: 65| AllData: {'test1': '56', 'quiz1': '65', 'quiz2': '75', 'quiz3': '25'}</td>
    <td>key: Quiz3| Data: | Static Keyed: 65| AllData: {'test1': '56', 'quiz1': '65', 'quiz2': '75', 'quiz3': '25'}</td>
    <td>key: Test1| Data: | Static Keyed: 65| AllData: {'test1': '56', 'quiz1': '65', 'quiz2': '75', 'quiz3': '25'}</td>
</tr>
<tr>
    <td>key: : value: </td>
    <td>key: : value: </td>
    <td>key: : value: </td>
    <td>key: : value: </td>
</tr>
</table> 

数据存在,但是django不允许我使用变量作为键。我的问题是,我希望表格能够随着传递给它的测试/等级对的数量不断变化而动态增长。这是正常的吗?

编辑:

事实证明,我使用的是不同版本的django,而不是我以前使用的版本。这段代码将完成我在django版本0.96中尝试做的事情:

<tr>
{% for data in Data.items %} 
    <td>{{data.0}}: {{data.1}}</td>
{% endfor %}
</tr>

感谢所有帮助过的人,即使我最初提供了错误的信息。

3 个答案:

答案 0 :(得分:1)

{% for key, value in Data.items %}
     <td>key: {{ key|capfirst }} - value: {{ value }} - Data: {{ Data }}</td>
{% endfor %}

答案 1 :(得分:0)

试试这个。以前的解决方案仅适用于django&gt; 1.0

{% for data in Data.items %}
     <td>key: {{ data.0 }}: value: {{ data.1 }}</td> 
{% endfor %}

答案 2 :(得分:-1)

如果我没错,SortedDict继承自Dict,我认为你可以这样使用它:

{% for key, value in Data %}
    <td>key: {{ key|capfirst }} - value: {{value}}</td>
{% endofr %}

但我担心不清楚你的词汇中有什么价值。