我正在尝试在模板标签中过滤Django查询集,如下所示:
@register.simple_tag
def splice(query, person_id):
query2 = query.filter(personid=person_id)
return query2
然后,在我的模板中,我想将新过滤的查询集传递到包含html文件中。这是我的尝试:
{% with splice df person_id as x %}
{% include 'includes/file.html' with df=x %}
如何正确执行此操作?还是有人对如何更有效地实现这一想法有想法?
答案 0 :(得分:0)
您在那里不需要with
;一个简单的标签可以直接通过as
将其数据添加到上下文中。
{% splice df person_id as x %}
但是,这可能不是正确的方法。您应该使用包含标签,而不是编写模板标签来为包含的模板添加上下文,而是使用包含标签来处理将模板包含特定上下文的整个过程。所以:
@register.inclusion_tag('template/file.html')
def splice_include(query, person_id):
query2 = query.filter(personid=person_id)
return {'df': x}
现在您可以直接使用它:
{% splice_include df person_id %}
根本不需要单独的include
。
答案 1 :(得分:0)
您需要重新排列传递参数的方式。使用Django docs提供了一个很好的示例。然后,您可以从file.html调用templatetag。
调用文件
{% include 'includes/file.html' with df=df person_id=person_id %}
file.html
{% load my_template_tags %}
{{df|slice:person_id}}