Мой цикл for не получает значения - PullRequest
0 голосов
/ 19 января 2011

Вот что у меня есть:

result = defaultdict(<type 'list'>,
{'USA': [{'username': 'user123', 'first-name': 'John', 'last-name': 'Doe'}],
 'Europe': [{'username': 'myname654', 'first-name': 'Peter', 'last-name': 'Johnson'}]
})

Вот вывод, который я хочу получить

<html>
  <body>
    <h1> USA </h1>
    <p> user123, John Doe</p>

    <h1> Europe </h1>
    <p> myname654, Peter Johnson</p> 
  </body>
</html>

Я пробовал множество различных циклов, но ни один из них не работал.

Вот что у меня есть, но оно не работает.

{% for item in result %}
<h1> {{ item }} </h1>
<p> {{ result.item.username }} </p>
{% endfor %}

Ответы [ 3 ]

1 голос
/ 20 января 2011

Результат - словарь. Итерация по словарю с for x in mydict просто дает ключи, а не значения. Так что вам нужно сделать {% for item, value in mydict.items %}.

Во-вторых, {{ result.item.username }} не имеет никакого смысла вообще. item - это значение ключа в result dict, но вы не можете делать такой косвенный поиск в шаблонах Django. Однако, к счастью, у нас есть значение в переменной value.

В-третьих, как указывает Каби, каждый value на самом деле является списком из одного элемента. Таким образом, вам нужно получить доступ к первому элементу в этом списке, а затем к члену username.

Собираем все вместе:

{% for item, value in result.items %}
<h1> {{ item }} </h1>
<p> {{ value.0.username }} </p>
{% endfor %}
0 голосов
/ 20 января 2011

Мне кажется, строка:

<p> {{ result.item.username }} </p>

должна быть:

<p> {{ result.item.0.username }} </p>
0 голосов
/ 19 января 2011

Вы используете print для получения вывода в цикле for.Это сначала преобразует объект в строку.Видимо, объекты в этом случае - это что-то вроде объектов xml / html.

Внутри шаблона Django вы не печатаете.Вы можете попытаться преобразовать объекты в строку с помощью вызова str(), но в целом у меня такое ощущение, что вы пытаетесь заставить шаблоны делать то, к чему вы не должны создавать шаблоны.

Попробуйте создать метод для объекта модели, который возвращает нужную строку, и вместо этого вставьте ее в шаблон.

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