2014-09-30 77 views
1

有一個網址:重定向用戶到新的URL

/foo 

我想一切辦法去重定向這樣的:

/foo/xxx --> /bar/xxx 
/foo/xxx/yyy --> /bar/xxx/yyy 

如何Django中的url-pattern有太多模樣重定向全部foo酒吧

這樣的事情?

url(r'^foo/????$', RedirectView.as_view()) 

這是我用什麼「零級」重定向和它的工作原理:

url(r'^foo/?$', RedirectView.as_view(pattern_name='template_name')) 
+0

您是否嘗試過任何模式?展示下! – 2014-09-30 14:33:30

+1

'url(r'^ foo /(.*)',lambda request,path:redirect('/ bar /'+ path))'? – falsetru 2014-09-30 14:35:21

回答

1

在網址中獲取模式路徑的剩餘部分。

又通路徑以/bar/redirect function組合:

url(r'^foo/(.*)', lambda request, path: redirect('/bar/' + path)) 
+0

好主意!它運作得非常好。但是如果我在/ bar之前獲得了信息呢?例如/ baz/foo/xxx變成/ bar/xxx。我如何確保/ baz /不會丟失? – Oleg 2014-09-30 14:41:20

+1

@ h3d0,你可以添加另一個模式:'(。*?)/ foo /(.*)',稍加修改'lambda'。現在,你需要考慮網址:'/ foo/baz/foo/foo /'...... – falsetru 2014-09-30 14:45:21

+0

恩,感謝您的幫助 - 現在我知道在哪裏看! – Oleg 2014-09-30 14:48:39