【问题标题】:Referencing a particular element in a list in django引用 django 列表中的特定元素
【发布时间】:2017-08-13 07:57:33
【问题描述】:

我正在尝试将一个列表的元素复制到另一个列表中,并且我正在使用这段代码来做到这一点:

{% for i in range(2,7) %}
    {{ list1.append(list2|lookup:i) }}
{% endfor %}

list1 是一个空列表。 我还定义了这个自定义过滤器查找,如下所示:

@register.filter
def lookup(d, key):
    return d[key]

但这不起作用,我收到此错误:

TemplateSyntaxError at / expected token ',', got ':'.

我做错了什么。我是 django 和 jinja 模板的新手。

【问题讨论】:

  • custom jinja2 filters,而jinja2过滤器使用类似函数的语法,lookup:i应该是lookup(i)
  • lookup(i) 不起作用。
  • 您首先需要正确实现,看来您正在像 django 模板一样实现它并期望它的行为像 jinja2。按照我给你的链接并正确实施它。

标签: django python-2.7 jinja2


【解决方案1】:

您的代码中的问题是您尝试使用 Django 模板中不允许的参数调用方法 append。您应该使用所需的逻辑编写自己的标签。例如:

list2|copy

【讨论】:

  • 我也试过这个:{{ read_list.append(read_notifications.i) }} 但这不起作用,而当我写 {{read_list.append(read_notifications.0)}} 它工作
  • 可能不在django模板中,但在jinja2中是允许的
【解决方案2】:

您可以使用这个简单的 lambda 进行过滤:

list1 + filter(lambda x: x if x not in list1 else None, range(2,7))

【讨论】:

  • 如果你想存储值使用+=而不是+
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-03
  • 2021-07-16
  • 2021-09-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多