鹡鸰可路由页面混合,具有"overlapping"指向不同路由的 url 路径



是否有可能有一个鹡鸰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的回应。

这有可能实现吗?

感谢您的帮助。

路由被指定为正则表达式,因此您需要用^$标记开始和结束,以确保 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)

最新更新