gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 20:44:21 25 4
gpt4 key购买 nike

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

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

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

有谁知道我如何才能访问所有已发布的页面对象,比如在ALL 页面上?

最佳答案

我最终通过在提供所有 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 都会被注入(inject)到模板中,并且 main-navigation.html 将可以访问在自定义标签函数中传递给它的任何内容:

templates/main-navigation.html:

<ul id="navigation">
{% for page in cms_pages %}
{{ page.get_title }}
{% endfor %}
</ul>

我希望这可以帮助人们更好地理解模板标签。我发现文档在这个主题上有点困惑。

关于python - 如何从每个页面访问 django-cms 中的所有页面对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4372731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com