我正在尝试通过调整此SO post中解释的多路径模式在我的Django项目中包含可选的URL模式。
在我的urls.py
文件中,我有以下模式。
urlpatterns = [
url(r'^(?P<slug>[-\w]+)\/?$', View.as_view()),
url(r'^(?P<section>[-\w]+)\/(?P<slug>[-\w]+)\/?$', View.as_view()),
url(r'^(?P<section>[-\w]+)\/(?P<tag>[-\w]+)\/(?P<slug>[-\w]+)\/?$',View.as_view()),
]
参数section
,tag
和slug
对应于模型字段。因此,对/foo/bar/baz
的HTTP请求返回带有“foo”部分,“bar”标记和“baz”slug的模型实例。并非所有模型实例都有section
或tag
,这些参数都是可选的。
如果您将URL调度程序视为具有URL域和模型实例的codomain的函数,那么我使用的模式不是一个内射函数。 /baz
,/foo/baz
和/foo/bar/baz
返回相同的模型实例,但只有最后一个网址才会返回模型实例。
简而言之,如果且仅当请求的网址为urlpatterns
时,如何配置/foo/bar/baz
以返回我的foo-bar-baz模型?
答案 0 :(得分:0)
我认为在视图中处理起来会容易得多。在您看来,我查看了请求,如果URI格式错误,请将重定向发送到正确的URI。这比试图强制进入URL调度程序要容易得多。