一尘不染

Django模板-将字符串拆分为数组

django

我有一个模型字段,它存储一个URL列表(是的,我知道,这是错误的方式)url1\nurl2\nurl3<...>。我需要将字段拆分为模板中的数组,因此创建了自定义过滤器:

@register.filter(name='split')
def split(value, arg):
    return value.split(arg)

我用这种方式:

{% with game.screenshots|split:"\n" as screens %}
        {% for screen in screens %}
            {{ screen }}<br>
        {% endfor %}
    {% endwith %}

但是正如我所看到的,split并不能正常工作:我得到类似的输出url1 url2 url3(如果查看源代码,则带有换行符)。为什么?


阅读 1253

收藏
2020-03-31

共1个答案

一尘不染

Django有意排除了许多类型的templatetag,以阻止你对模板进行过多处理。(不幸的是,人们通常只是自己添加这些类型的模板标签。)

这是应该在模型中而不是模板中的完美示例。

class Game(models.Model):
    ...
    def screenshots_as_list(self):
        return self.screenshots.split('\n')

然后,在模板中,你只需执行以下操作:

{% for screen in game.screenshots_as_list %}
    {{ screen }}<br>
{% endfor %}

更清晰,更容易使用。

2020-03-31