我的自定义标签:

# app/templatetags/ctags.py

def getgenre():
    genre = ["Test1", "Test2"]
    return genre

register.simple_tag(getgenre)

我的html:
# app/templates/base.html

{% load ctags %}
<!-- {% getgenre %} -->
{% for genre in getgenre %}
    <li>{{genre}}</li>
{% endfor %}

这为我呈现了一个空白页面。
如果我取消注释 {% getgenre %},django 会按预期呈现 ["Test1", "Test2"]。
我尝试了无数种设置标签的变体(包括非 simple_tag 方式),但都无济于事。我根本无法迭代我的自定义标签之一返回的任何值。

我在这里错过了一些基本的东西吗?

最佳答案

您应该使用 assignment_tag 而不是 simple_tag :

@register.assignment_tag
def getgenre():
    genre = ["Test1", "Test2"]
    return genre

然后在模板中:
{% load ctags %}
{% getgenre as genre_list %}
{% for genre in genre_list %}
    <li>{{genre}}</li>
{% endfor %}

关于python - Django 自定义模板标签未在循环中呈现,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27976511/

10-10 07:11