【发布时间】:2015-03-22 12:54:26
【问题描述】:
我有一个父 URLconf:
from django.conf.urls import include, patterns, url
urlpatterns = patterns('',
(r'^main/(?P<name>[^/]+)/(?P<region>[^/]+)/(?P<id>[^/]+)/', include('foo')),
)
还有一个包含重定向的子 URLconf(包含在父 URL 中):
from django.conf.urls import patterns, url
urlpatterns = patterns('',
url(r'^view/$', RedirectView.as_view(url='/main/%(name)s/%(region)s/%(id)s/detail')),
)
(本质上,我正在尝试将看起来像 /main/product/1/134/view 的路径重定向到看起来像 /main/product/1/134/detail 的路径。)
Django documentation 表示“包含的 URLconf 从父 URLconf 接收任何捕获的参数。”
但是当我尝试访问 /main/product/1/134/view 时,我得到了一个 KeyError,因为 name 未被识别。
是否有其他方法可以在 RedirectView 中引用接收到的捕获参数?
注意:当我在父 URLconf 中执行整个操作时,我没有收到错误:
urlpatterns = patterns('',
(r'^main/(?P<name>[^/]+)/(?P<region>[^/]+)/(?P<id>[^/]+)/view/$', RedirectView.as_view(url='/main/%(name)s/%(region)s/%(id)s/detail'))
)
【问题讨论】:
-
您可以通过引用组索引号
\1或名称来引用捕获的组。
标签: python django url-redirection url-pattern urlconf