Django标记返回块标记中的数组
我有一个字符串项数组,我想在HTML表中显示,在模板中最简单的方式似乎是“messages”表单。我称之为“活动”:Django标记返回块标记中的数组,django,django-templates,Django,Django Templates,我有一个字符串项数组,我想在HTML表中显示,在模板中最简单的方式似乎是“messages”表单。我称之为“活动”: {% if activities %} <table class="activities"> <tr> {% for activity in activities %} <td>{{ activity }}</td> {% endfor %} </tr> <
{% if activities %}
<table class="activities">
<tr>
{% for activity in activities %}
<td>{{ activity }}</td>
{% endfor %}
</tr>
</table>
{% endif %}
我还尝试了只使用decorator,只调用“register”(无论是否设置返回值),但都不起作用。桌子总是空的
关于stackoverflow有很多相关的问题,但每个问题似乎都是针对一个稍微不同的案例量身定制的,使用inclusion_标记,对于这个简单的案例来说,似乎设计得太过了。如果您使用的是Django>=1.4,有一种简单的创建方法。它们将返回值存储在
之后指定为
关键字的模板变量中。在您的情况下,这将是:
{%get_activities as activities%}
{%if活动%}
{activities%%中的活动的%s}
{{activity}}
{%endfor%}
{%endif%}
这个标签背后的代码非常简单。真正重要的是assignment\u标签
decorator
来自django导入模板的
register=template.Library()
@register.assignment_标记
def get_活动():
报税表(“A”、“B”)
对于1.4以上的Django版本,这仍然是可行的,但需要更多的样板代码来创建编译函数和节点类。事实上,Django文档就在
assignment\u tag
之前,请注意,您只需要注册一次标记。在您的示例中,您正在使用decorator,然后在下面第二次注册标记。
from django import template
register = template.Library()
@register.simple_tag
def activities():
return ("A", "B")
activities = register.simple_tag(activities)