我有一个模型字段,它将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(如果我查看源代码,就会看到换行符).为什么?

推荐答案

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

这是一个完美的例子,它应该在你的model中,而不是你的模板中.

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

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

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

更清晰,更容易操作.

Django相关问答推荐

Django Signals:从实例访问ManyToManyRel值

在Django中提交表单后更改模型数据

如何在Django模板中为无效词典查找打开异常?

社工/社工简戈

如何在Django模板中获取组中对象的整体计数器(&Q;)?

SQLite上可以正常使用Many2Many链接注释,但MariaDB上无法正常使用(生产环境)

如何删除django请求中的重复项

如何在 gunicorn conf 文件中指定 uvicorn 工作人员

Django:想要将一个空字段显示为空白而不是显示无

如何从 django 模板生成静态 html 文件?

如何在终端中切换 Python 版本?

Django聚合:仅求和返回值?

Django:获取上次用户访问日期

超过 1 个外键

获取 Django 表单中的错误列表

ImportError:升级到 Django 4.0 后无法从 'django.conf.urls' 导入名称 'url'

Django:根据自定义函数过滤查询

运行单元测试时禁用 Django South?

在 Django 中使用 select_related Select 特定字段

django/文件上传权限