Django 模板 - 将字符串拆分为数组 [英] Django templates - split string to array

查看:67
本文介绍了Django 模板 - 将字符串拆分为数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have a model field, which stores a list of URLs (yeah, I know, that's wrong way) as url1 url2 url3<...>. I need to split the field into an array in my template, so I created the custom filter:

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

我是这样使用的:

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

但正如我所看到的,split 不希望工作:我得到像 url1 url2 url3 这样的输出(如果我查看源代码,则带有换行符).为什么?

but as I can see, split doesn't want to work: I get output like url1 url2 url3 (with linebreaks if I look at the source). Why?

推荐答案

Django 有意省略了许多类型的模板标签,以阻止您在模板中进行过多处理.(不幸的是,人们通常只是自己添加这些类型的模板标签.)

Django intentionally leaves out many types of templatetags to discourage you from doing too much processing in the template. (Unfortunately, people usually just add these types of templatetags themselves.)

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

This is a perfect example of something that should be in your model not your template.

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

然后,在您的模板中,您只需:

Then, in your template, you just do:

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

更清晰,更容易使用.

这篇关于Django 模板 - 将字符串拆分为数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆