2017-08-27 54 views
0

我有4個相同長度的列表,並希望將它們全部傳遞到html頁面。Django - 從views.py打印多個通過的列表

views.py

return render(request, 'result.html', {'listA':listA, 'listB':listB, 'listC':listC, 'listD':listD}) 

這裏是當我試圖用瓶的代碼。

app.py

return render_template('result.html', listA = listA, listB = listB, listC = listC, listD = listD) 

下面是在模板文件中的代碼;使用Flask,它可以打印出沒有任何問題的表格,但它似乎不適用於Django。 我應該如何解決我的代碼?

result.html

{% for i in listA %} 
<tr> 
<th> {{ listA[loop.index] }} </th> 
<td> {{ listB[loop.index] }} </td> 
<td> {{ listC[loop.index] }} </td> 
<td> {{ listD[loop.index] }} </td> 
</tr> 
{% endfor %} 
+0

你什麼錯誤?請發佈你的回溯。 – 0decimal0

+1

[在django模板中動態獲取列表項]可能的重複(https://stackoverflow.com/questions/8948430/get-list-item-dynamically-in-django-templates) –

+0

這是我得到的錯誤:無法解析其餘的:'[loop.index]'從'listA [loop.index]' – Tsao

回答

0

應使用執行查找定製templatetag,因爲Django的不提供一個給你。 然後使用Django模板引擎for loop用於獲取forloop.counter0

首先創建應用文件夾內templatetags目錄與__init__.py。讓我們假設你的應用程序被稱爲polls文件夾結構如下所示:該走了進去lookup.py

polls/ 
    __init__.py 
    models.py 
    templatetags/ 
     __init__.py 
     lookup.py 
    views.py 

後寫查找代碼:

from django import template 

register = template.Library() 

@register.filter 
def lookup(d, key): 
    return d[key] 

而且finlly在模板文件中使用它:

{% load lookup %} 
... 
{% for i in listA %} 
    <tr> 
     <th> {{ listA|lookup:forloop.counter0 }} </th> 
     <td> {{ listB|lookup:forloop.counter0 }}</td> 
     <td> {{ listC|lookup:forloop.counter0 }}</td> 
     <td> {{ listD|lookup:forloop.counter0 }}</td> 
    </tr> 
{% endfor %} 
... 
+2

它不會工作 –

+0

@BearBrown檢查出更新的答案 – demonno

+0

我認爲這個問題是重複的(get-list-item)[https:/ /stackoverflow.com/questions/8948430/get-list-item-dynamically-in-django-templates] –