Python 如何在Django模板中进行解析?

Python 如何在Django模板中进行解析?,python,django,templates,list,dictionary,Python,Django,Templates,List,Dictionary,假设我将其传递给Django模板。现在,我想显示宽度为200的标题。我如何才能做到这一点,而不是用暴力的方式: post = { sizes: [ { w:100, title="hello"}, {w:200, title="bye"} ] } 我想用解析的方法来做。一个简洁的方法是使用过滤器模板标签 {{ post.sizes.1.title }} 这应该放在模板中的templatetags包中,比如postfilters.py,和{%loadpostfilters%} 当然,您也可以修

假设我将其传递给Django模板。现在,我想显示宽度为200的标题。我如何才能做到这一点,而不是用暴力的方式:

post = { sizes: [ { w:100, title="hello"}, {w:200, title="bye"} ] }

我想用解析的方法来做。

一个简洁的方法是使用过滤器模板标签

{{ post.sizes.1.title }}
这应该放在模板中的
templatetags
包中,比如
postfilters.py
,和
{%loadpostfilters%}

当然,您也可以修改它以提供正确的
大小
对象,因此您可以使用post | detailsofwidth:200作为postdetails%}{{postdetails.something},{{postdetails.title}{%endwith%}

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
{% for i in post.sizes %}
    {% if i.w == 200 %}{{ i.title }}{% endif %}
{% endfor %}