【问题标题】:How to list wagtail pages in Django template?如何在 Django 模板中列出 wagtail 页面?
【发布时间】:2019-12-02 16:26:41
【问题描述】:

我有一个主要使用 Django 制作的网站,但有一些内容页面需要由 Wagtail 管理。

如何在 Django 模板中链接到使用 Wagtail 创建的页面?我不想对任何页面进行硬编码。客户端应该能够在 Wagtail 中创建一个页面,并且应该在 Django 模板中创建指向该页面的链接。

问题是我不知道如何通过 Django 模板引用 Wagtail 页面。

【问题讨论】:

    标签: python django wagtail


    【解决方案1】:

    当你说

    通过 Django 模板引用 Wagtail 页面

    我假设您的意思是如果用户单击导航项,则呈现将带用户进入页面的导航。要呈现页面树的导航,您可以在模板文件(通常为 base.html)中执行以下操作:

    {% for item in request.site.root_page.get_children.live.in_menu %}
        <a href="{% pageurl item %}">{{ item.title }}</a>
    {% endfor %}
    

    以上是最简单的页面导航渲染。在构建导航时,您可能会遇到许多其他注意事项,其中之一是构建嵌套导航。如果您需要这些信息,我也可以发布相关信息(我通过递归调用来自base.html 的单独文件中的一小段 html 来构建无限制的嵌套导航)。

    【讨论】:

    • 你完全理解我的意图。在我的base.html 中输入您的代码时,我没有从for 循环中得到任何结果。我的base.html 位于我的 Django 根目录的模板文件夹中。我想知道它是否无法从那里检测 Wagtail 网站。
    • 您是否在设置中的MIDDLEWARE 声明中包含了wagtail.core.middleware.SiteMiddleware
    • 是的。不过,我并不通过 Wagtail 管理我的所有页面。
    • 请从您的设置文件中发布完整的MIDDLEWARE 设置。
    • MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'wagtail.core.middleware.SiteMiddleware', 'wagtail.contrib.redirects.middleware.RedirectMiddleware', ]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-09
    • 2019-01-21
    相关资源
    最近更新 更多