是否有可能有一个鹡鸰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)