我正在尝试使用模板过滤器来运行一个循环,但我无法在同一个语句/模板中组合两个 python 语句。在模板中组合两个变量的正确方法是什么?请参阅下面的语法和解释:
我正在建立一个双索引的论坛,这意味着,我有一个 col-md-2 与类别列表。每个类别都有论坛,根据单击的类别,该类别的论坛会填充下一个 col-md-2。剩下的 col-md-8 根据选择的类别和论坛获取其内容。
我的逻辑:
我已经定义了一个加载类别列表的模板标签,无论加载哪个页面或选择哪个类别或论坛,它都不会改变。所以效果很好。但根据所选类别,我的第二列需要填充。为此,我正在尝试定义一个自定义过滤器(如下)。但是,我不确定如何使用它,因为它需要传递给另一个模板,它运行一个循环来呈现 html。即使我在这个模板中创建了 for 循环(而不是将其传递给另一个),我仍然需要做嵌套模板标签,例如:{% for forum in {{ forum.category|forumindexlistbycategory }} %}
在任何一种情况下,我都会收到类型Invalid filter: 'forumindexlistbycategory'
或"with" in u'include' tag needs at least one keyword argument
.
我在 pybb_tags.py 中定义了以下自定义模板过滤器:
from pybb.models import Forum
@register.filter
def forumindexlistbycat(category):
forumlistbycat = Forum.objects.filter(category=category)
return forumlistbycat
在我的模板中,我尝试按如下方式加载它:
{% load i18n pybb_tags %}
<div class='category'>
{% if category %}
<h3>{{ category }}</h3>
{% include 'pybb/forumindex_list.html' with forum_list=category.forums_accessed category=category parent_forum='' %}
{% else %}
<h3>{{ forum.category }}</h3>
{% include 'pybb/forumindex_list.html' with forum_list= %}{{ forum.category|forumindexlistbycategory }}
{% endif %}
</div>