私は、すべてのcmsページを提供するテンプレートタグをdjangoで作成することで、この問題を解決することになりました。
app / template_tags / Navigation_tags.py:
from django import template
from cms.models.pagemodel import Page
register = template.Library()
def cms_navigation():
cms_pages = Page.objects.filter(in_navigation=True, published=True)
return {'cms_pages': cms_pages}
register.inclusion_tag('main-navigation.html')(cms_navigation)
次に、テンプレートで次のようにテンプレートタグを呼び出します。
{% load navigation_tags %} {% cms_navigation %}
これには、main-navigation.htmlファイルを作成しておく必要があります。ここで、そのテンプレートのHTMLは、タグがある場所ならどこでもテンプレートに挿入され、main-navigation.htmlは、カスタムタグ関数で渡されたものすべてにアクセスできます。
テンプレート/main-navigation.html:
<ul id="navigation">
{% for page in cms_pages %}
{{ page.get_title }}
{% endfor %}
</ul>
これが誰かがテンプレートタグをよりよく理解するのに役立つことを願っています。私は、この主題に関してドキュメントが少し混乱していることに気づきました。