Перебор словарных значений не работает для меня в Django на GAE - PullRequest
2 голосов
/ 09 июня 2011

Данные являются отсортированным Dict от 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'}

Я пробовал разные примеры в Документе, но я застрял.

EDIT:

Я попробовал этот код:

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

1 голос
/ 09 июня 2011
{% for key, value in Data.items %}
     <td>key: {{ key|capfirst }} - value: {{ value }} - Data: {{ Data }}</td>
{% endfor %}
0 голосов
/ 09 июня 2011

Попробуй это.Предыдущее решение будет работать только с django> 1.0

{% for data in Data.items %}
     <td>key: {{ data.0 }}: value: {{ data.1 }}</td> 
{% endfor %}
0 голосов
/ 09 июня 2011

Если я не ошибаюсь, SortedDict наследует от Dict, я думаю, вы можете использовать его следующим образом:

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

Но, боюсь, неясно, каковы ценности в вашем диктате.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...