post = { sizes: [ { w:100, title="hello"}, {w:200, title="bye"} ] }
假設我將它傳遞給我的Django模板。現在,我要顯示的標題其中width = 200。我怎樣才能做到這一點,沒有做它蠻力方式:如何在Django模板中解析?
{{ post.sizes.1.title }}
我想這樣做的解析方式。
post = { sizes: [ { w:100, title="hello"}, {w:200, title="bye"} ] }
假設我將它傳遞給我的Django模板。現在,我要顯示的標題其中width = 200。我怎樣才能做到這一點,沒有做它蠻力方式:如何在Django模板中解析?
{{ post.sizes.1.title }}
我想這樣做的解析方式。
一個簡單的方法是使用過濾器模板標籤。
from django.template import Library
register = Library()
@register.filter('titleofwidth')
def titleofwidth(post, width):
"""
Get the title of a given width of a post.
Sample usage: {{ post|titleofwidth:200 }}
"""
for i in post['sizes']:
if i['w'] == width:
return i['title']
return None
這應該在一個templatetags
包走了,說是postfilters.py
,且模板中{% load postfilters %}
。
當然,你也可以改變這個,給你正確的sizes
對象,所以你可以做{% with post|detailsofwidth:200 as postdetails %}{{ postdetails.something }}, {{ postdetails.title }}{% endwith %}
。
{% for i in post.sizes %}
{% if i.w == 200 %}{{ i.title }}{% endif %}
{% endfor %}