【问题标题】:Looping through CSV string in Django Template在 Django 模板中循环遍历 CSV 字符串
【发布时间】:2017-12-14 17:10:26
【问题描述】:

所以我有一个变量是逗号分隔的字符串 ("val1,val2,val3"),我想遍历 Django 模板中的每个元素,例如:

{% for host in network.hosts %}
<h3>{{host}}</h3>
{% endfor %}

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

val1

val2

val3

我该怎么做呢?

【问题讨论】:

标签: html django django-templates


【解决方案1】:

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

@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/

【讨论】:

  • 它给了我一个错误,似乎不像'split',Django 版本:1.11.2 异常类型:TemplateSyntaxError 异常值:无效过滤器:'split'
【解决方案2】:

实现此功能的一种方法是在您的模型中定义一个允许您拆分字符串的模型。

在您的 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

【讨论】:

    猜你喜欢
    • 2016-08-31
    • 2020-08-03
    • 2013-04-08
    • 1970-01-01
    • 2016-01-24
    • 2013-05-13
    • 2022-01-03
    • 2012-01-19
    • 1970-01-01
    相关资源
    最近更新 更多