【问题标题】:Wagtail route still returns 404鹡鸰路线仍返回 404
【发布时间】:2020-03-13 04:09:16
【问题描述】:

我遇到了一个奇怪的问题,不知道为什么会这样。

这是我的模型:

class PostIndexPage(RoutablePage):
    max_count = 1
    parent_page_types = []
    intro = RichTextField(blank=True)

    content_panels = Page.content_panels + [
        FieldPanel('intro', classname="full")
    ]

    @route(r'^posts/$')
    def main(self, request):
        from django.shortcuts import render
        return render(request, self.get_template(request), self.get_context(request))

我在该模型中定义了路线,但它似乎没有效果。 http://127.0.0.1:8000/post-index-page/ - 旧网址仍在使用旧方式 http://127.0.0.1:8000/posts/ - 但这个没有(404,未找到)。

你知道我做错了什么吗?

【问题讨论】:

    标签: python django wagtail


    【解决方案1】:

    @route 在RoutablePage 上定义的URL 路由相对于页面的正常路径,由其在页面树中的slug 和位置确定。如果您使用 slug post-index-page 创建了一个可路由页面,则将在 /post-index-page/posts/ 找到 posts 路由。

    如果您想要一个完全固定 URL 的视图,您始终可以将其定义为标准 Django 视图。

    【讨论】:

    • > 如果你想要一个保持在一个完全固定的 URL 的视图,你总是可以将它定义为一个标准的 Django 视图。如何在固定 URL 上设置 wagtail 页面?我看到的选项是 a)在其上方创建页面并设置所有 slug 以创建所需的路径 b)创建第二个 wagtail 根,它将它视为一个不同的站点,它不像 听起来打算
    • @jbothma 您可以在固定的 URL 上设置一个 Django 视图,该视图检索您选择的页面并返回在其上调用 .serve(request) 的结果。但是如果你在这个例子中与 RoutablePageMixin 一起做,那么基本上就没有 Wagtail 了——你只是在写普通的 Django(最多有一个 FooPage.objects.get(slug='something') 行,这样你就可以从中提取数据一页)。
    猜你喜欢
    • 2019-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多