Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从每个页面访问django cms中的所有页面对象?_Python_Django_Django Cms - Fatal编程技术网

Python 如何从每个页面访问django cms中的所有页面对象?

Python 如何从每个页面访问django cms中的所有页面对象?,python,django,django-cms,Python,Django,Django Cms,我正在使用Django CMS 2.1.0.beta3,遇到了一个问题。我需要访问变量中的所有页面,这样我就可以循环浏览它们,并使用for循环创建导航菜单。django cms提供的show_菜单功能不适用于我正在做的事情 我需要一个包含所有页面的查询集,以便我可以执行类似以下操作: {% for page in cms_pages %} {{ page.title }} {% endfor %} 有人知道我如何访问所有已发布的页面对象,如所有页面上的对象吗?您可以使用页面模型

我正在使用Django CMS 2.1.0.beta3,遇到了一个问题。我需要访问变量中的所有页面,这样我就可以循环浏览它们,并使用for循环创建导航菜单。django cms提供的show_菜单功能不适用于我正在做的事情

我需要一个包含所有页面的查询集,以便我可以执行类似以下操作:

{% for page in cms_pages %}
    {{ page.title }}
{% endfor %}    

有人知道我如何访问所有已发布的页面对象,如所有页面上的对象吗?

您可以使用页面模型获取所有已发布的页面。

Page.objects.published()
您可以在视图或插件中使用它

问候 米罗
migaat.blogspot.com

我最终解决了这个问题,在django中创建了一个templatetag,为所有cms页面提供服务:

app/template\u tags/navigation\u 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>
    {cms_pages%}中的页面为% {{page.get_title}} {%endfor%}

我希望这有助于更好地理解templatetags。我发现文档在这个问题上有点混乱。

根据您应该使用的文档:

Page.objects.public()

来源:

您需要在需要页面的位置添加此内容

{{ request.current_page }}
这对我有用。
您可能需要在代码中的某个地方包含
{%load staticfiles%}

我知道您可以做到这一点,但如何使所有页面模板都可以使用它?八年后,文档仍然主要是示例。谢谢你的澄清@太棒了,我很高兴这仍然有用!