Wagtail RouteablePageMixin,URL路径“重叠”,导致指向不同的路由

问题描述 投票:0回答:1

是否有可能是w的RouteablePageMixin路线是另一个的子路径?

这是我的代码:

class MyPage(RoutablePageMixin, Page):
    @route("foo/")
    def foo(self, request):
        view = views.FooView.as_view()
        return view(request, self)

    @route("foo/bar/")
    def bar(self, request):
        view = views.BarView.as_view()
        return view(request, self)

会发生什么:当我访问<page url>/foo/bar/时,会得到FooView响应,而我想要的是BarView响应。

这有可能实现吗?

感谢您的帮助。

wagtail
1个回答
0
投票

路由指定为regular expressions,因此您需要用^$标记开始和结束,以确保URL模式与整个路径匹配,而不是在碰巧包含该路径的任何路径上匹配给定模式作为子字符串。

@route("^foo/$")

@route("^foo/bar/$")

或者,您可以利用以下事实:按照在代码中出现的顺序检查模式,然后将更具体的模式放在第一位:

class MyPage(RoutablePageMixin, Page):
    @route("foo/bar/")
    def bar(self, request):
        view = views.BarView.as_view()
        return view(request, self)

    @route("foo/")
    def foo(self, request):
        view = views.FooView.as_view()
        return view(request, self)
© www.soinside.com 2019 - 2024. All rights reserved.