我試圖使用模板過濾器來執行循環,但我無法在同一個語句/模板中組合兩個python語句。什麼是在模板中組合兩個變量的正確方法?請參閱下面的語法和解釋:如何在Django模板中嵌套或聯合使用兩個模板標籤?
我正在建立一個雙重索引的論壇,意思是說,我有一個帶有類別列表的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>
嗨。包含這個自定義過濾器的自定義模板標籤文件的名稱是pybb_tags.py,所以我嘗試了'{%load i18n pybb_tags forumindexlistbycat%}','{%load i18n pybb_tags%}'和{%load i18n pybb_tags% } {%forumindexlistbycat as forumindexlistbycategory%}'但每次遇到這兩個錯誤時:'第2行的塊標記無效:'forumindexlistbycat'。你忘了註冊或加載這個標籤嗎?或''forumindexdexlistbycat'不是已註冊的標籤庫。「我認爲你的語法可能是真的,但我怎樣才能正確地加載這個過濾器到我的模板? –
嘗試將您的標記文件命名爲您的過濾器,並將其放置在應用程序目錄中的「templatetags」文件夾中。所以它的路徑如'../app/templatetags/forumindexlistbycat.py' – toffi9
在你的templatetags文件夾中添加空文件'__init __。py'。 – toffi9