使用Python + Django做Web开发时,有时需要在view中传递一个字典给模板(template),如何在模板中遍历字典呢?
下面介绍两种方法:
views.py代码如下:
def forward(request):
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
register.filter('key',key)
模板index.html代码如下:
<!-- index.html -->
{% load myfilter %}
.........
<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_layui后台模板
django项目及环境搭建好后,创建模板文件。
一种基于Vue.js和Django的权限控制方法及系统.pdf一种基于Vue.js和Django的权限控制方法及系统.pdf一种基于Vue.js和Django的权限控制方法及系统.pdf一种基于Vue.js和Django的权限控制方法及系统.pdf一种基于Vue.js和...
一个Django模板,用于使用Flask作为前端,Django作为后端
Django入门基础教程:django模板 Django入门基础教程:django模板
django-classy-tags, 基于类的Django 模板标记 django-classy-tags请参考文档/目录中的文档以获得帮助。... 这里项目这个项目的目标是创建一种新的编写 Django 模板标签的方法,它与当前的Django 模板基础结构
第19周-第06章节-Python3.5-Django模板语言循环字典.avi
一套精美的博客模板 ,适用于各种后台,如果要是用django开发,可以参考追梦任务的博客:https://www.zmrenwu.com/post/2/
因为工作的需要,最近一直在思考如何更好的组织Django中的静态资源,比如JS、CSS一类,如何结合前端构建工具写出更好的代码以及结构呢?下面这篇文章就给大家详细介绍了实现的方法,话不多说,来一起看看详细的介绍...
项目标题:高效 Django 模板引擎开发源码集合 技术栈:主要采用 Python 语言进行开发。 包含文件类型:共计 36 个文件,其中包括: - Python 源代码文件(.py):31 个 - 文本文件(.txt):2 个 - Git 忽略配置(....
Django框架的模板提供了{% for %} 标签来进行循环 例如对集合进行循环是比较简单的 {% for row in v1 %} <div>{{row.name}} {% endfor %} 但是在Django中,并不直接支持形如”int i = 0;i<100>{{forloop.counter}} {...
django-email-from-template:发送完全由Django模板生成的电子邮件
打算做网站左边栏的二级链接,通过从数据库外联键(ForeignKey)获取子节点,再使用Django模板{% for <个体> in <父节点>.<个体所在表名>_set.all %}产生第二季链接。 但该模板还存在渲染错误,会出现子节点渲染后的父...
DjangoReact模板标签这个django库允许您将React(16+)组件添加到django模板中。产品特点使用Django templatetags包含react组件在一个视图中无限数量的组件支持自定义模型(从一开始就不能json序列化) 使用或服务器...
一、django的模板: 在settings.py的文件中可以看到并设置这个模板。 1.直接映射: 通过建立的文件夹(templates)和文件(html)来映射。 <!DOCTYPE html> <html lang=en> <head> <meta ...
django博客项目前端模板
从新手角度记录django前端模板应用和crispy form有关内容,涉及bootstrap4框架,自定义用户密码修改和重置等。详细记录了settings文件及url匹配,对Django的forms和自带的views进行了简单应用于修改。