tho*_*len 8 python django django-cms
我正在使用Django CMS 2.1.0.beta3并遇到问题.我需要访问变量中的所有页面,以便我可以使用for循环遍历它们并创建导航菜单.django cms提供的show_menu功能对我正在做的事情不起作用.
我需要一个包含所有页面的查询集,所以我可以做类似以下的事情:
{% for page in cms_pages %}
{{ page.title }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
有谁知道如何访问所有已发布的页面对象,如所有页面上的那样?
tho*_*len 11
我最终通过在django中创建一个提供所有cms页面的templatetag来解决这个问题:
应用程序/ 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)
Run Code Online (Sandbox Code Playgroud)
然后在模板中调用模板标记,如下所示:
{% load navigation_tags %} {% cms_navigation %}
Run Code Online (Sandbox Code Playgroud)
这要求您创建一个main-navigation.html文件.在这里,该模板中的HTML将被注入模板的任何位置,并且main-navigation.html可以访问自定义标记函数中传递给它的任何内容:
模板/主navigation.html:
<ul id="navigation">
{% for page in cms_pages %}
{{ page.get_title }}
{% endfor %}
</ul>
Run Code Online (Sandbox Code Playgroud)
我希望这可以帮助别人更好地理解模板标签.我发现文档在这个问题上有点混乱.
| 归档时间: |
|
| 查看次数: |
6649 次 |
| 最近记录: |