我結束了創建在Django一個templatetag所有提供瞭解決這個問題的cms頁面:
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 %}
這就要求你創建了一個主navigation.html文件。在這裏,來自該模板的HTML將被注入到標籤所在的模板中,main-navigation.html將有權訪問在自定義標籤函數中傳遞給它的任何內容:
templates/main-navigation.html :
<ul id="navigation">
{% for page in cms_pages %}
{{ page.get_title }}
{% endfor %}
</ul>
我希望這可以幫助某人更好地理解模板標籤。我發現文檔在這個問題上有點混亂。
我意識到您可以這樣做,但是如何讓所有頁面模板都可用? – thomallen 2010-12-07 16:54:10