通过Django模板中的CSV字符串循环

时间:2017-07-10 20:25:22

标签: html django django-templates

所以我有一个逗号分隔的字符串变量(" val1,val2,val3")我希望迭代Django模板中的每个元素,如:

class Meta

在这种情况下,我的csv变量是network.hosts,我的预期结果是:

VAL1

val2的

VAL3

我将如何做到这一点?

2 个答案:

答案 0 :(得分:2)

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

@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 %}

Django官方网站将帮助您创建自定义模板标记https://docs.djangoproject.com/en/1.11/howto/custom-template-tags/

答案 1 :(得分:0)

让这一点发挥作用的一种方法是在你的模型中定义一个允许你拆分字符串的模型。

在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 %}

希望它有所帮助!

来源 - Django templates - split string to array