Django自定义标签reusablity

时间:2015-11-09 01:18:12

标签: python django

我有一个简单的自定义标记,它将返回一个对象列表

@register.simple_tag
def get_languages(obj):
    return obj.get_languages()

有没有这样的方式,在我的模板中,我可以保存自定义标签的结果,以便我可以重复使用其他地方在我的HTML?

{% get_languages project as used_languages %}
<span class="tag">{{ used_languages.0.name }}</span>
<span class="tag">{{ used_languages.1.name }}</span>
<span class="tag">{{ used_languages.2.name }}</span>

1 个答案:

答案 0 :(得分:1)

以下是记住标记的简单方法:

get_languages_cache = None

@register.simple_tag
def get_languages(obj):
    if get_languages_cache is None:
        get_languages_cache = obj.get_languages()
    return get_languages_cache

这假定obj.get_languages()永远不会返回None。检查this question以获取进一步的讨论和Python中的memoization示例。