有沒有辦法在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