2014-09-22 4 views
1

Привет, У меня возникли проблемы с отображением моего списка в шаблоне. В консоли он печатает все. Однако, когда я делаю печать после цикла for, я получаю только последнюю строку списка.Оказание списка в шаблоне Django

Вот мой код:

if 'process_udr' in request.POST:   

     #API Url for UDR History 
     apiUrl_udr ='http://apiurl' 

     #API Get Variable for UDR History 
     response_udr = urllib2.urlopen(apiUrl_udr) 
     reader = csv.reader(response_udr) 

     for udr_rows in reader: 
      print udr_rows 

     payload = {'usr': usr, 'usrpw': usrpw, 'response': response, 'response_2': response_2, 'response_udr': response_udr, 'udr_rows': udr_rows,} 

     return render_to_response(template, payload, context_instance=RequestContext(request))     

    else: 

     None 

Результаты я вижу, отпечатанные с для цикла в консоли:

['09/18/14', '08:00:00', '09/18/14', '08:00:00', 'XXXXXXXXXXX', 'GRP-XXXXXXXXXXX', 'DEFAULT', 'spostmv', '57565106', '0', '0', '19854'] 
['09/18/14', '09:00:00', '09/18/14', '09:00:00', 'XXXXXXXXXXX', 'GRP-XXXXXXXXXXX', 'DEFAULT', 'spostmv', '71792666', '0', '0', '20994'] 
['09/18/14', '10:00:00', '09/18/14', '10:00:00', 'XXXXXXXXXXX', 'GRP-XXXXXXXXXXX', 'DEFAULT', 'spostmv', '32902589', '0', '0', '30552'] 
['09/18/14', '11:00:00', '09/18/14', '11:00:00', 'XXXXXXXXXXX', 'GRP-XXXXXXXXXXX', 'DEFAULT', 'spostmv', '46560924', '0', '0', '26552'] 
['09/18/14', '12:00:00', '09/18/14', '12:00:00', 'XXXXXXXXXXX', 'GRP-XXXXXXXXXXX', 'DEFAULT', 'spostmv', '76349057', '0', '0', '52998'] 
['09/18/14', '13:00:00', '09/18/14', '13:00:00', 'XXXXXXXXXXX', 'GRP-XXXXXXXXXXX', 'DEFAULT', 'spostmv', '77010644', '0', '0', '20510'] 
['09/18/14', '14:00:00', '09/18/14', '14:00:00', 'XXXXXXXXXXX', 'GRP-XXXXXXXXXXX', 'DEFAULT', 'spostmv', '78546837', '0', '0', '15008'] 
['09/18/14', '15:00:00', '09/18/14', '15:00:00', 'XXXXXXXXXXX', 'GRP-XXXXXXXXXXX', 'DEFAULT', 'spostmv', '79770873', '0', '0', '30726'] 
['09/18/14', '16:00:00', '09/18/14', '16:00:00', 'XXXXXXXXXXX', 'GRP-XXXXXXXXXXX', 'DEFAULT', 'spostmv', '75913522', '0', '0', '23696'] 
['09/18/14', '17:00:00', '09/18/14', '17:00:00', 'XXXXXXXXXXX', 'GRP-XXXXXXXXXXX', 'DEFAULT', 'spostmv', '19052209', '0', '0', '17656'] 

Это на самом деле то, что быть напечатаны после того, как цикл.

['09/18/14', '17:00:00', '09/18/14', '17:00:00', 'XXXXXXXXXXX', 'GRP-XXXXXXXXXXX', 'DEFAULT', 'spostmv', '19052209', '0', '0', '17656'] 

Вот мой код шаблона:

{% for udr_row in udr_rows %} 
    {{udr_row}} 
{% endfor %} 

Любая помощь очень ценится.

+2

Предлагаю лучше Название, описание вопроса. В качестве примера «Оказание списка в шаблоне Django» будет более информативным и поможет привлечь больше людей, чтобы ответить на вопрос. – farzad

+0

Я обновлю его, спасибо за предложение. – Infinixd

ответ

1

Вы печатаете из цикла, как

rows = [] 
for udr_rows in reader: 
    print udr_rows 
    rows.append(udr_rows) 

так значение udr_rows будет последней строкой или reader.

Пожалуйста, измените свою полезную информацию, чтобы получить reader вместо udr_rows.

payload = {'usr': usr, 'usrpw': usrpw, 'response': response, 'response_2': response_2, 'response_udr': response_udr, 'udr_rows': rows,} 
+1

Когда я пытаюсь исправить это с помощью вашего решения. Ничто не переходит к шаблону. Когда я пытаюсь отобразить только udr_rows в шаблоне с циклом for, я получаю следующее: <_csv.reader object at 0x0348DB30>. – Infinixd

+0

Я обновил ответ, пожалуйста, попробуйте этот. – Nilesh

+0

Когда я попробовал ваше обновленное решение. Все, что я видел, как результат, были [...] [...] [...] ... вертикально снижались. – Infinixd

2

Помещенный

udr_rows = reader 

После того, как для ... что должно сделать трюк. Вы печатаете только последнее значение на нем

+0

Когда я это делаю, после цикла for я получаю только: <_ csv.reader object в 0x0348DB30>. – Infinixd

+0

Где вы получаете это ... в форме для ??? – cdvv7788

+0

После определения udr_rows = читателя после for. – Infinixd

2

Проблема после печати на консоль с этим контуром:

for udr_rows in reader: 
    print udr_rows 

указатель файла находится в конце файла - вот почему ничего не получает отправленных в ваш шаблон. Преобразование объекта читателя непосредственно в список, а затем отправить его в шаблон:

reader = csv.reader(response_udr) 
payload = {'usr': usr, 
      'usrpw': usrpw, 
      'response': response, 
      'response_2': response_2, 
      'response_udr': response_udr, 
      'udr_rows': list(reader)} 

Вы также должны использовать render shortcut, и вам не нужно, чтобы отправить ответ на ваш шаблон; вы должны включить request context processor, и ваши шаблоны автоматически получат объект запроса.


Это решение рода работ, но мне нужно, чтобы захватить каждый список, и не ставить все в один список, если это имеет смысл. Когда он печатает от , каждый из них - это список, который я считаю. Я хочу, чтобы это сделать, так что я могу стилизовать список в таблицы с заголовками

Что вы получаете в шаблоне список-из-списков, так что это было бы очень легко для вас, чтобы создать таблицу с его:

<table> 
    <thead> 
     <tr> 
     <th>Column 1</th> 
     <th>Column 2</th> 
     ... 
     <th>Column N</th> 
     </tr> 
    </thead> 
    <tbody> 
     {% for row in udr_rows %} 
     <tr> 
     {% for item in row %} 
      <td>{{ item }}</td> 
     {% endfor %} 
     </tr> 
     {% endfor %} 
    </tbody> 
</table> 
+0

Это решение работает, но мне нужно захватить каждый список и не помещать все в один список, если это имеет смысл. Когда он печатает из списка, каждый из них - это список, который я считаю. Я хочу сделать это, чтобы стилизовать список в таблицы с заголовками. – Infinixd

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