Я пытаюсь использовать фильтры шаблонов для запуска цикла, но я не могу объединить два оператора 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>