有没有办法在Django模板中进行如下操作?使用带空格的键
{% for hop in hops%}
<tr>
<td>{{ hop.name }}</td>
<td>{{ hop.mass }}</td>
<td>{{ hop."boil time" }}</td>
</tr>
{% endfor %}
跳跃“煮沸时间”不起作用。简单的解决方案是重命名关键boil_time,但我对替代品感兴趣。
有没有办法在Django模板中进行如下操作?使用带空格的键
{% for hop in hops%}
<tr>
<td>{{ hop.name }}</td>
<td>{{ hop.mass }}</td>
<td>{{ hop."boil time" }}</td>
</tr>
{% endfor %}
跳跃“煮沸时间”不起作用。简单的解决方案是重命名关键boil_time,但我对替代品感兴趣。
得到它的最好办法是在属性名潜入另一个变量,就像这样:
{% for key, value in hop.items %}
{% ifequal key 'boil time' %}
{{ value }}
{% endifequal %}
{% endfor %}
在Django的0.96模板语言不支持元组(由谷歌AppEngine上使用的版本)扩张,所以这是一个有点丑陋:
{% for hop in hops %}
<tr>
<td>{{ hop.name }}</td>
<td>{{ hop.mass }}</td>
<td>
{% for item in hop.items %}
{% ifequal item.0 'boil time' %}
{{ item.1 }}
{% endifequal %}
{% endfor %}
</td>
</tr>
{% endfor %}
所以,把你的代码中,我们最终得到:
{% for hop in hops %}
<tr>
<td>{{ hop.name }}</td>
<td>{{ hop.mass }}</td>
<td>
{% for key, value in hop.items %}
{% ifequal key 'boil time' %}
{{ value }}
{% endifequal %}
{% endfor %}
</td>
</tr>
{% endfor %}
在Django的0.96(在谷歌AppEnginge版本),这将成为:
{% for hop in hops %}
<tr>
<td>{{ hop.name }}</td>
<td>{{ hop.mass }}</td>
<td>
{% for item in hop.items %}
{% ifequal item.0 'boil time' %}
{{ item.1 }}
{% endifequal %}
{% endfor %}
</td>
</tr>
{% endfor %}
甚至还有一个wordier方式来获得它,使用重新组合标签:
{% regroup hop.items by 'boil time' as bt %}
{% for item in bt %}
{% if forloop.first %}
{% for item2 in item.list %}
{% for item3 in item2 %}
{% if not forloop.first %}
{{ item3 }}
{% endif %}
{% endfor %}
{% endfor %}
{% endif %}
{% endfor %}
你可以使用一个get
从djangosnippets过滤:http://www.djangosnippets.org/snippets/1412/
(重命名的关键可能是更好的...)
我会给你一个机会,让你知道它是怎么回事。 – 2009-11-13 02:16:42
男人,我一直在做太多的Ruby。我的倾向是monkeypatch'dict'将下划线转换为空格... – 2009-11-13 02:56:59
我可能应该提到我在google appengine中使用django模板,而不是完整的django应用程序。似乎没有一种简单的方法来添加过滤器。 – 2009-11-14 01:34:35
Django的0.96,这是什么GOOGL e Appengine用于模板,以下工作:
{% for hop in recipe.get_hops %}
{% for item in hop.items %}
{% ifequal item.0 'boil time' %}
<p>{{ item.1 }}</p>
{% endifequal %}
{% endfor %}
{% endfor %}
item.0是关键,item.1是值。 Link.
Django模板语言不允许这样做。相当于'hop ['boil time']'的模板语言将会是'hop.boil time'(我认为这是他所面临的问题)。 – 2009-11-13 02:11:06
下面是我上面提出的评论的一个参考文献,它显示'.'表示法包含索引... http://docs.djangoproject.com/en/dev/ref/templates/api/#rendering-a-context – 2009-11-13 02:11:54
I欣赏写出所有代码的努力,但出于某种原因,它似乎不适用于我,复制和粘贴事件。我无法迭代字典来打印任何键或值,即使没有ifequals。 – 2009-11-14 01:36:26