所以我有一个变量,它是一个逗号分隔字符串(“VAL1,VAL2,VAL3”),我想通过每个元素像Django模板进行迭代:通过CSV串在Django模板循环
{% for host in network.hosts %}
<h3>{{host}}</h3>
{% endfor %}
在这种情况下,我的CSV变量是network.hosts和我预期的结果将是:
VAL1
VAL2
VAL3
我该怎么去做这件事?
所以我有一个变量,它是一个逗号分隔字符串(“VAL1,VAL2,VAL3”),我想通过每个元素像Django模板进行迭代:通过CSV串在Django模板循环
{% for host in network.hosts %}
<h3>{{host}}</h3>
{% endfor %}
在这种情况下,我的CSV变量是network.hosts和我预期的结果将是:
VAL1
VAL2
VAL3
我该怎么去做这件事?
创建一个自定义模板标签和使用它。使用以下代码为您完成的工作创建一个新的模板标签。
@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/
它给我的错误,似乎不喜欢“分裂”,Django的版本:\t 1.11.2 异常类型:\t TemplateSyntaxError 异常值:\t 无效过滤器:“分裂” –
让这个工作起来的一种方法是在你的模型中定义一个允许你分割字符串的模型。
在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模板 - 分割字符串数组]可能的复制(https://stackoverflow.com/questions/8317537/django-templates -split串到阵列) – Jonathan