【问题标题】:How to get the url of the root page in template in Wagtail?如何在 Wagtail 的模板中获取根页面的 url?
【发布时间】:2018-07-11 22:48:00
【问题描述】:

pageurl can do it with a Page object,但我不知道如何获取根页面对象。

【问题讨论】:

    标签: wagtail


    【解决方案1】:

    根页面的 URL 是 /。只需写<a href="/"> - 无需使用模板标签。

    (你可能认为这是作弊,但它实际上是根页面的定义。)

    如果您将 urls.py 中的 include(wagtail_urls) 行植根于 / 以外的路径,并且不想在模板中对该路径进行硬编码,则可以使用:{% url 'wagtail_serve' '' %}(注意'wagtail_serve' 之后的空字符串)。

    【讨论】:

    • 对不起,我没有说清楚。我的意思是 Wagtail CMS 中设置下定义的根页面。不是整个网站的根页面。
    • 您是指您在“设置”->“站点”下选择的那个?是的,这也是我要说的那个。当您在那里选择一个页面时,您正在选择要在 URL“/”处显示的页面。
    • 或者如果我以 Django 方式进行操作,即。 {% url 'name_of_wagtail_root_view' %},我想知道那个名字是什么。我的网址设置:re_path(r'^blog/', include(wagtail_urls)), 我试过{% url 'wagtail_serve' %},但它给出了错误:Reverse for 'wagtail_serve' with no arguments not found. 1 pattern(s) tried: ['blog/((?:[\\w\\-]+/)*)$']
    • 问题是“/”不是我网站的根目录。请看上面的评论。谢谢。
    • 好的,我现在明白了 - 请查看我的更新答案。
    【解决方案2】:

    要在 wagtail 模板中显示站点根页面,请将以下内容添加到页面模板中:

    {% load wagtailcore_tags %}
    <a href="{{ request.site.root_url }}">Site Url</a>
    

    此代码已弃用。从 wagtail 2.9 开始,首选选项是 {% wagtail_site %}。查看wagtail 2.9 release notes

    【讨论】:

    • 这不起作用:“无法访问此站点 localhost 拒绝连接。”
    • @danny 你应该试试{{ page.get_site.root_url }}
    【解决方案3】:

    如果您使用 wagtail_modeltranslation 并希望获取翻译后的根页面 url(例如:example.com/fr/ 用于法语),您可以使用{% pageurl request.site.root_page %}。

    【讨论】:

      【解决方案4】:

      使用 wagtail 版本 > 2.12.2 您需要导入 {% wagtail_site as current_site %}

      然后您可以在模板中使用:{{ current_site.root_url }}。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-23
        • 1970-01-01
        • 2021-10-09
        • 2019-01-21
        • 2011-03-15
        相关资源
        最近更新 更多