Django URL中的重定向

时间:2012-10-12 07:57:27

标签: django django-urls url-pattern

如何将从特定模式开始的所有网址重定向到另一个?

说明

我希望能够重定向如下:

/pattern1/step1/ to /pattern2/step1/
/pattern1/step2/ to /pattern2/step2/
/pattern1/continue/ to /pattern2/continue/

在Django URL模式中执行此操作的最简单方法是什么?

3 个答案:

答案 0 :(得分:5)

RedirectView有效。使用命名的kwarg捕获路径的其余部分。它将被传递到RedirectView.get_redirect_url,因此您可以将其插入到您提供的网址中。

url(r'^pattern1/(?P<url>.+)$', RedirectView.as_view(url="/pattern2/%(url)s")),
#                    ^                                                ^
#                    | this url                         appears here  |

答案 1 :(得分:0)

您可以使用redirect_to通用视图,并在urls.py中添加重定向网址:

from django.views.generic.simple import redirect_to

urlpatterns = patterns('',
    ('^pattern1/step1/$', redirect_to, {'url': '/pattern2/step1/'}),
    #any more patters.
)

以下是文档:Generic view redirect_to 。这些也可以采用参数。

答案 2 :(得分:0)

还可以在Web服务器级别处理重定向。