Html 在Django模板中循环使用CSV字符串

Html 在Django模板中循环使用CSV字符串,html,django,django-templates,Html,Django,Django Templates,因此,我有一个逗号分隔的字符串(“val1,val2,val3”)变量,我想迭代Django模板中的每个元素,如: {% for host in network.hosts %} <h3>{{host}}</h3> {% endfor %} {%用于网络中的主机。主机%} {{host}} {%endfor%} 在这种情况下,我的csv变量为network.hosts,预期结果为: 瓦尔1 瓦尔2 val3 我该怎么做呢?实现这一点的一种方法是在中定义一个允许拆分字符

因此,我有一个逗号分隔的字符串(“val1,val2,val3”)变量,我想迭代Django模板中的每个元素,如:

{% for host in network.hosts %}
<h3>{{host}}</h3>
{% endfor %}
{%用于网络中的主机。主机%}
{{host}}
{%endfor%}
在这种情况下,我的csv变量为network.hosts,预期结果为:

瓦尔1

瓦尔2

val3


我该怎么做呢?

实现这一点的一种方法是在中定义一个允许拆分字符串的模型

在Python代码中,可以将此函数添加到模型中:

class Networks(models.Model):
    ...
    def hosts_as_list(self):
        return self.hosts.split(',')
然后,您的模板可能看起来像:

{% for host in network.hosts.hosts_as_list %}
    {{ host }}<br>
{% endfor %}
{%用于network.hosts.hosts_as_list%}
{{host}}
{%endfor%}
希望有帮助


Source-

创建一个自定义模板标记并使用它。使用以下代码为您完成的工作创建新的模板标记

@register.filter(name='split')
def split(value, arg):
    return value.split(arg)
然后,您可以像下面的代码一样在模板中使用此过滤器

{% with network.hosts|split:"," as hosts_list %}
    {% for host in hosts_list %}
     <h3>{{host}}</h3>
    {% endfor %}
{% endwith %}
{%with network.hosts | split:“,”as hosts_list%}
{主机中主机的%u列表%}
{{host}}
{%endfor%}
{%endwith%}

Django官方网站将帮助您创建自定义模板标记

它给我一个错误,似乎不像“拆分”,Django版本:1.11.2异常类型:TemplateSyntaxError异常值:无效筛选器:“拆分”可能重复