Django模板遍历字典的方法

转自 liqi328163 的 《Django模板遍历字典的方法》

http://liqi328163.iteye.com/blog/1664235


Python代码  收藏代码
  1. <span style="color: #000000;"> </span>  

 

使用Python + Django做Web开发时,有时需要在view中传递一个字典给模板(template),如何在模板中遍历字典呢?

下面介绍两种方法:

    views.py代码如下:

Python代码  收藏代码
  1. <span style="color: #000000;">def forward(request):  
  2.     dicts = {"key1"1"key2"2"key3"3, }  
  3.     return render_to_response("index.html",{"dicts":dicts,},context_instance = RequestContext(request))  
  4.   </span>  

 

 

 

1.第一种遍历方法:

 

   index.html代码如下:

Python代码  收藏代码
  1. <span style="color: #000000;">............</span>  
Python代码  收藏代码
  1. <span style="color: #000000;">{% for key,value in dicts.items %}  
  2.   <tr class="{% cycle 'altrow' '' %}">              
  3.     <td>{{ forloop.counter }}</td>            
  4.     <td>{{ key }}</td>            
  5.     <td>{{ value }}</td>            
  6.   </tr>           
  7. {% endfor %}</span>  
Python代码  收藏代码
  1. <span style="color: #000000;">............</span>  

    这种方法遍历字典,简单明了,但由于字典是无序的,  不能满足特定的要求,如:首先输出key2,在输出key1,key3。要做到这点就需要使用第二种方法。

 

2. 第二种使用自定义过滤器

 

   1):首先自定义过滤器:

      Django的app包的合适位置创建一个templatetags包,它应该和models.py,
views.py等在同一级,例如:

     polls/  
       models.py  
       
templatetags/  
       views.py
  

    

      添加两个文件到templatetags包(即该目录下),一个__init__.py文件(来告诉Python这是一个包含Python代码的模块)和一个包含你的自定义的标签/过滤器定义的文件,后者的文件名是你将在后面用来载入标签的名字,例如,如果你的自定义标签或者过滤器在一个叫myfilter.py文件里,你可以在模板里做下面的事情:
     myfilter.py代码如下:

   

Python代码  收藏代码
  1. <span style="color: #000000;">from django import template  
  2.   
  3. register = template.Library()  
  4.   
  5. def <span>key</span>(d,key_name):      
  6.     value = 0      
  7.     try:          
  8.       value = d[key_name]      
  9.    except KeyError:          
  10.       value = 0      
  11.    return value</span>  
Python代码  收藏代码
  1. <span style="color: #000000;">register.filter('key',<span>key</span>)</span>  

 

   模板index.html代码如下:

 

Python代码  收藏代码
  1. <span style="color: #000000;"><!-- index.html --></span><span>  
  2. <span style="color: #000000;">{% load myfilter %}</span></span>  
Python代码  收藏代码
  1. <span style="color: #000000;">.........</span>  
Python代码  收藏代码
  1. <span style="color: #000000;"><tr class="altrow">           
  2.   <td>1</td>              
  3.   <td>key2</td>           
  4.   <td>{{ dicts|<span>key</span>:"key2" }}  
  5.   </td>           
  6. </tr>         
  7. <tr>            
  8.   <td>2</td>              
  9.   <td>key1</td>           
  10.   <td>{{ dicts|<span>key</span>:"key1" }}  
  11.   </td>                   
  12. </tr>         
  13. <tr class="altrow">             
  14.   <td>3</td>              
  15.   <td>key3</td>           
  16.   <td>{{ dicts|<span>key</span>:"key3" }}</td>          
  17. </tr>               </span> 

阅读更多
上一篇多个APP共存Django配置
下一篇Django拆分app为多个小app
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭