Python 在GAE上的Django中,迭代字典值对我来说不起作用

Python 在GAE上的Django中,迭代字典值对我来说不起作用,python,django,google-app-engine,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 %

数据是来自
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 %}
我在文档中尝试了不同的例子,但是我被卡住了

编辑:

我尝试了以下代码:

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

{数据%中的键1为%1}
{{key1 | capfirst}}
{%endfor%}
{数据%中的键2为%1}
密钥:{key2 | capfirst}}数据:{{Data.key2}}}静态密钥:{{Data.quiz1}}}所有数据:{{Data}
{%endfor%}
{%为键,数据%中的值}
键:{{key}}:值:{{value}
{%endfor%}
这就是结果:

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

Quiz1
Quiz2
Quiz3
测试1
键:Quiz1 |数据:|静态键:65 |所有数据:{'test1':'56','Quiz1':'65','quiz2':'75','quiz3':'25'}
键:Quiz2 |数据:|静态键:65 |所有数据:{'test1':'56','quiz1':'65','Quiz2':'75','quiz3':'25'}
键:Quiz3 |数据:|静态键:65 |所有数据:{'test1':'56','quiz1':'65','quiz2':'75','Quiz3':'25'}
键:Test1 |数据:|静态键:65 |所有数据:{'Test1':'56','quiz1':'65','quiz2':'75','quiz3':'25'}
键::值:
键::值:
键::值:
键::值:
数据在那里,但django不允许我使用变量作为键。我的问题是,我希望表随着传递给它的测试/等级对数量的变化而动态增长。这正常吗

编辑:

事实证明,我使用的django版本与我原以为的不同。此代码将执行我在django版本0.96中尝试执行的操作:

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

{%用于data.items%中的数据}
{{data.0}}:{{data.1}
{%endfor%}

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

如果我没有错,SortedDict继承了Dict,我想你可以这样使用它:

{% for key, value in Data %}
    <td>key: {{ key|capfirst }} - value: {{value}}</td>
{% endofr %}
{%用于键,数据%中的值]
键:{key | capfirst}}-值:{{value}
{%endofr%}

但我恐怕不清楚您的dict中的值是什么。

如果我没有错,SortedDict继承自dict,我想您可以这样使用它:

{% for key, value in Data %}
    <td>key: {{ key|capfirst }} - value: {{value}}</td>
{% endofr %}
{% for key, value in Data.items %}
     <td>key: {{ key|capfirst }} - value: {{ value }} - Data: {{ Data }}</td>
{% endfor %}
{%用于键,数据%中的值]
键:{key | capfirst}}-值:{{value}
{%endofr%}
但我恐怕不清楚您的指令中的值是什么。

{%for key,value in Data.items%}
{% for key, value in Data.items %}
     <td>key: {{ key|capfirst }} - value: {{ value }} - Data: {{ Data }}</td>
{% endfor %}
key:{{key | capfirst}}-value:{{value}-Data:{{Data} {%endfor%}
{%代表键,数据项中的值%}
key:{{key | capfirst}}-value:{{value}-Data:{{Data}
{%endfor%}

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

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

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

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


在dict中,键是'test1''quiz1''quiz2''quiz3',值应该是'-10''65''40''55',我尝试了你的代码,但它为值变量提供了空格。在dict中,键是'test1''quiz1''quiz2''quiz3',值应该是'-10''65''40''55',我尝试了你的代码,但是它给了我一个空白值变量。你使用的是什么版本的Django?你使用的是什么版本的Django?当我尝试这段代码时,我得到了这样一个:文件“C:\Program Files\Google\Google\U appengine\lib\Django\U 0\U 96\Django\template\defaulttags.py”,第536行,在do\U for raise TemplateSyntaxError中,带有五个单词的“for”语句应以“reversed”结尾:%s“%token.contents TemplateSyntaxError:”带有五个单词的“for”语句应以“reversed”结尾:对于键,Data.items中的值此错误消息显然与您在上面所说的版本1.2相矛盾。您的权利。但我的主要代码是:import os.environment['DJANGO\u设置\u模块']='SETTINGS'来自google.appengine.dist导入使用\u库使用\u库('DJANGO','1.2')这是在windows xp系统上直接安装的1.5.0版GAE。我要回去看看为什么不是1.2.Ok,这样设置似乎不会改变任何东西。我想这意味着我运行的是.96版。当我尝试这段代码时,我得到了以下文件:“C:\Program Files\Google\Google\U appengine\lib\django\U 0\U 96\django\template\defaulttags.py”,第536行,在raise TemplateSyntaxError的do_中,“'for'语句(包含五个单词)应以'reversed'结尾:%s”%token.contents TemplateSyntaxError:“for”语句(包含五个单词)应以“reversed”结尾:对于键,Data.items中的值此错误消息显然与上面关于1.2版的内容相矛盾。您的权利。但我的主要代码是:import os.environ['DJANGO\u SETTINGS\u MODULE']='settings'来自google.appengine.dist导入使用库使用库('django','1.2')这是在windows xp系统上直接安装的1.5.0版GAE。我要回去看看为什么不是1.2。好的,这样设置似乎不会改变任何东西。我想这意味着我运行的是版本。96这确实解决了问题!谢谢!我误导了所有人,认为我的版本是1.2。现在我只需要弄清楚如何获得我的django在版本1.2下工作,但现在,我可以使用它。谢谢!!这确实解决了问题!谢谢!我误导了所有人,认为我的版本是1.2。现在我只需要弄清楚如何让我的django在版本1.2下工作,但现在,我可以使用它。谢谢!!