使用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这是一个包含Python代码的模块)和一个包含你的自定义的标签/过滤器定义的文件,后者的文件名是你将在后面用来载入标签的名字,例如,如果你的自定义标签或者过滤器在一个叫myfilter.py文件里,你可以在模板里做下面的事情:
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模板遍历字典的方法的更多相关文章

  1. Python中使用item()方法遍历字典的例子

    Python中使用item()方法遍历字典的例子 这篇文章主要介绍了Python中使用item()方法遍历字典的例子,for...in这种是Python中最常用的遍历字典的方法了,需要的朋友可以参考下 ...

  2. django在进行模板render(渲染)时,对传过来的是字典中包含字典应用方法

    网上自强学堂参考的 views.py def home(request): info_dict = {'site': u'自强学堂', 'content': u'各种IT技术教程'} return r ...

  3. 在 Django 模板中遍历复杂数据结构的关键是句点字符

    在 Django 模板中遍历复杂数据结构的关键是句点字符 ( . ). 实例二 mysit/templates/myhtml2.html修改如下 <!DOCTYPE html> <h ...

  4. <转> django模板语言filter方法

    Django的模板是一个简单的文本文件,它可以生成任何文本格式(HTML.XML.CSV等),在本文开始之前先看一个Django模板的例子: 从这个例子中可以看到,模板标签可以是单独出现的,如exte ...

  5. django 模板里面for循环和if常用的方法

    django 模板里面for循环常用的方法 {% for %} 允许我们在一个序列上迭代.与Python的for 语句的情形类似,循环语法是 for X in Y ,Y是要迭代的序列而X是在每一个特定 ...

  6. Django模板如何用一个变量查找字典值

    mydict = {"key1":"value1", "key2":"value2"} 在Django模板中查找字典值的 ...

  7. django模板中的extends和include使用方法

    一.extends使用方法 首先extends也就是继承,子类继承父类的一些特性.在django模板中通过继承可以减少重复代码. 首先我们建立一个app,名字叫做hello.别忘了在settings. ...

  8. Python简单遍历字典及删除元素的方法

    Python简单遍历字典及删除元素的方法 这篇文章主要介绍了Python简单遍历字典及删除元素的方法,结合实例形式分析了Python遍历字典删除元素的操作方法与相关注意事项,需要的朋友可以参考下 具体 ...

  9. python django 模板

    1 用两个大括号括起来的文字{{person_name}} 称为变量 2 被 大括号和面分号包围的文件({% if ordered_warranty %})是模板标签 3 过滤器是用管道符(|) 和U ...

随机推荐

  1. idea中pom.xml没有工作 IDEA中maven项目pom.xml依赖不生效解决

    问题: 今天在web项目中需要引入poi相关jar包.查看之下才发现pom.xml中的依赖虽然已经下载到了本地仓库 repository,但是却没有加入到项目路径的 Extenal Libraries ...

  2. Python——函数的高级应用

    一.函数赋值给变量 函数也是对象,也可以赋值给变量,当把函数赋值给变量后,可以通过变量调用函数. 例: def test(x,y): return x * y # 把函数赋值给变量 a = test ...

  3. 01_5_SERVLET为什么有2个init方法

    01_5_SERVLET为什么有2个init方法 1. 在web.xml配置初始化参数 <servlet> <servlet-name>TestInitServlet</ ...

  4. Linux运维笔记--第二部

    第2部-重要目录结构详解 1.回顾Linux目录结构知识 /dev/            设备目录 /etc/             系统配置及服务配置文件,启动命令的目录 /proc       ...

  5. cocos2dx通过ndk编译c++库

    ndk编译c++库,然后通过jni调用实现重要代码封装,是安卓应用中最常用的技术,一方面可以将重要的代码实现隐藏,防止泄漏,也可以提高打包速度. ndk里面的sample文件夹中有很多实用的例子,其中 ...

  6. lua调用java过程

    在cocos2dx框架中,有继承好的luaj文件来方便我们去使用lua调用java底层代码,注意:luaj只能使用在安卓平台下,如果在平台下使用,会出错, 所以使用前需要加平台判断,方法 如下: lo ...

  7. vsftpd服务安装与虚拟用户配置

    vsftpd的全名是“Very secure FTP Daemon” 一.安装vsftpd安装db4-util用于生成认证文件 yum -y install db4-utils 安装vsftpd yu ...

  8. Python中的可迭代对象,迭代器与生成器

    先来看一张概览图,关于容器(container).可迭代对象(Iterable).迭代器(iterator).生成器(generator). 一.容器(container) 容器就是一个用来存储多个元 ...

  9. JdbcTemplate实验

    实验1:测试数据源 @Test public void test() throws SQLException { ApplicationContext ioc = new ClassPathXmlAp ...

  10. build.xml: 21: Class not found: javac1.8

    在eclipse里运用ant时经常碰到class not found的错误提示,从而编译失败,其实是eclipse中本身的ant版本太老造成该的,但我今天安装的ant是1.8.4,感觉已经很新了,但编 ...