【问题标题】:Django template - convert variable to listDjango 模板 - 将变量转换为列表
【发布时间】:2016-08-26 05:50:15
【问题描述】:

我有要传递给模板的数组,例如:

{% include 'chant_box.html' with chants=all_chants only %}

有时我只有一个圣歌,将它作为数组从视图中传递是没有意义的(除了“实际”原因)。我想把它传递给这个模板,我需要先把它转换成列表,比如:

{% include 'chant_box.html' with chants=[single_chant] only %}

但这不起作用,包含在 list() 或 make_list 过滤器中也不起作用(生成字符串表示的字母列表)。有标准的方法来做到这一点吗?我知道我可以制作自定义过滤器,但我真的不想这样做,除非我必须这样做。

【问题讨论】:

  • 单例列表在这里很有意义,因为您引用的正是“实际原因”......为什么要将事情复杂化?
  • 我还需要当前模板中的“single_chant”变量,因此将其包装在单例列表中也会使事情变得复杂。
  • 您可以将single_chant添加到您包含的模板中并传递它,并将chantssingle_chant部分分别包装在if chantsif single_chant
  • 是的,我能做到。听起来不是很干净的解决方案来添加一堆 if's there.

标签: django django-templates django-template-filters


【解决方案1】:

我最终创建了简单的自定义过滤器:

@register.filter(name='singleton_list')
def image_data(object):
    return [object]

其他很好的方法是使用模板继承来避免条件和过多的重复。

【讨论】:

    猜你喜欢
    • 2016-11-26
    • 2013-04-14
    • 2011-06-09
    • 2021-08-15
    • 2012-11-06
    • 2013-07-27
    • 2013-10-13
    • 2015-08-12
    • 2016-10-28
    相关资源
    最近更新 更多