所以我有一個變量,它是一個逗號分隔字符串(「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