2015-08-26 2 views
0

У меня есть список в моих views.py, который я отправляю на HTML-страницу с помощью функции рендеринга, и я распечатываю ее на этой странице. Проблема в том, что, хотя все остальные списки, которые я отправляю, печатаются на странице HTML, эти два списка, которые я отправляю, в частности, не являются.Отображение списка на HTML-странице из Django

приложения/views.py

alttrue = [] 
altfalse = [] 
alttrue, altfalse = altCheck(soup) 
results = { 'alttrue' : alttrue, 
      'altfalse' : altfalse, 
      } 
render(context,'app/result.html', results) 

Теперь altCheck это функция, которая возвращает два списка, где по крайней мере один из них имеет значение, это точно. В моей result.html,

results.html

<h5>Alt pass results</h5> 
{% for tag in alttrue %} 
<p>{{ tag }}</p> 
{% endfor %} 
<h5>Alt fail results</h5> 
{% for tag in altfalse %} 
<p>{{ tag }} </p> 
{% endfor %} 

Проблема заключается в том, что работает для цикла по списку и пытается напечатать его, возвращает пустой список ([]). Однако, если бы я попытался напечатать его как таковой

<p>{{ alttrue }}</p> 
<p>{{ altfalse }}</p> 

Он отлично работает. Он печатает список. Просто итерация списка и распечатка переменных не работает.

+0

В одном, вы используете 'altfalse', а в другой используется' altpass'. Это опечатка? –

+0

Кроме того, ваш рендер должен выглядеть как «render (request, template_name, context)». Мне непонятно, что такое переменная 'context'. https://docs.djangoproject.com/en/1.8/topics/http/shortcuts/#render –

ответ

0

Вот что происходит не так:

alttrue = [] 
altfalse = [] 
alttrue, altfalse = altCheck(soup) 
results = { 'alttrue' : altpass, 
      'altfalse' : altfail, 
      } 
render(context,'app/result.html', results) 

в результате ДИКТ переменной в соответствии с кавычками (ключ), предполагают, чтобы быть имя переменной контекста. Это должно выглядеть ниже

alttrue = [] 
altfalse = [] 
alttrue, altfalse = altCheck(soup) 
results = { 'altpass' : alttrue , 
      'altfail' : altfalse , 
      } 
render(context,'app/result.html', results) 

template.html

{% for x in altpass %} 
{{x}} 
{% endfor %} 

{% for x in altfail %} 
{{x}} 
{% endfor %} 
+0

Ха-ха, нет нет. Это была моя опечатка. На самом деле это называется. Проблема заключается не в именовании. Когда я показываю список в целом, он работает. Когда я запускаю цикл через элементы списка и пытаюсь отобразить его, он не работает. Редактировали снова. Виноват. –

Смежные вопросы