在django中引用列表中的特定元素
我试图将一个列表中的元素复制到另一个列表中,我使用这段代码来实现这一点:在django中引用列表中的特定元素,django,python-2.7,jinja2,Django,Python 2.7,Jinja2,我试图将一个列表中的元素复制到另一个列表中,我使用这段代码来实现这一点: {% for i in range(2,7) %} {{ list1.append(list2|lookup:i) }} {% endfor %} 列表1是一个空列表。 我还定义了如下自定义筛选器查找: @register.filter def lookup(d, key): return d[key] 但这不起作用,我得到一个错误: TemplateSyntaxError at / expected
{% for i in range(2,7) %}
{{ list1.append(list2|lookup:i) }}
{% endfor %}
列表1是一个空列表。
我还定义了如下自定义筛选器查找:
@register.filter
def lookup(d, key):
return d[key]
但这不起作用,我得到一个错误:
TemplateSyntaxError at / expected token ',', got ':'.
我做错了什么。我不熟悉django和jinja模板。代码中的问题是,您试图使用django模板中不允许的参数调用方法
append
。您应该使用所需的逻辑编写自己的标记。例如:
list2|copy
您可以使用以下简单的lambda进行过滤:
list1 + filter(lambda x: x if x not in list1 else None, range(2,7))
我也尝试过:{{read_list.append(read_notifications.I)}}但这不起作用,而当我编写{{read_list.append(read_notifications.0)}时,它起作用了。它可能不在django模板中,但在jinja2中,如果您想存储值,可以使用
+=
而不是+
参见,jinja2过滤器使用类似函数的语法,lookup:i
应该是lookup(i)
lookup(i)不起作用。您首先需要正确地实现,似乎您正在像django模板一样实现它,并期望它像jinja2一样运行。遵循我给你的链接并正确地实现它。