Django模板遍歷字典的方法
阿新 • • 發佈:2017-08-15
row ext html template model import 不能 web keyerror
這是一個包含Python代碼的模塊)和一個包含你的自定義的標簽/過濾器定義的文件,後者的文件名是你將在後面用來載入標簽的名字,例如,如果你的自定義標簽或者過濾器在一個叫myfilter.py文件裏,你可以在模板裏做下面的事情:
myfilter.py代碼如下:
使用Python + Django做Web開發時,有時需要在view中傳遞一個字典給模板(template),如何在模板中遍歷字典呢?
下面介紹兩種方法:
views.py代碼如下:
dicts = {"key1": 1, "key2": 2, "key3": 3, } return render_to_response("index.html",{"dicts":dicts,},context_instance = RequestContext(request))
1.第一種遍歷方法:
index.html代碼如下:
{% for key,value in dicts.items %} <tr class="{% cycle ‘altrow‘ ‘‘ %}"> <td>{{ forloop.counter }}</td> <td>{{ key }}</td> <td>{{ value }}</td> </tr> {% endfor %}
這種方法遍歷字典,簡單明了,但由於字典是無序的, 不能滿足特定的要求,如:首先輸出key2,在輸出key1,key3。要做到這點就需要使用第二種方法。
2. 第二種使用自定義過濾器
1):首先自定義過濾器:
在Django的app包的合適位置創建一個templatetags包,它應該和models.py,
views.py等在同一級,例如:
polls/
models.py
templatetags/
views.py
添加兩個文件到templatetags包(即該目錄下),一個__init__.py文件(來告訴Python
myfilter.py代碼如下:
from django import template register = template.Library() def key(d,key_name): value = 0 try: value = d[key_name] except KeyError: value = 0 return value
模板index.html代碼如下:
<tr class="altrow"> <td>1</td> <td>key2</td> <td>{{ dicts|key:"key2" }} </td> </tr> <tr> <td>2</td> <td>key1</td> <td>{{ dicts|key:"key1" }} </td> </tr> <tr class="altrow"> <td>3</td> <td>key3</td> <td>{{ dicts|key:"key3" }}</td> </tr>
Django模板遍歷字典的方法