Django重定向基于url模式的部分

时间:2016-01-28 18:49:26

标签: python django redirect

所以我有一个小问题,我无法真正找到解决方案。

我想将r'^blogg/表单上的所有链接重定向到r'^blog/'。我认为有一个类似于这篇文章here中接受的答案的解决方案,但它并没有那么好用。请注意,博客应用程序有许多子网址模式,因此像RedirectView.as_view(url="/blog/")这样的解决方案无效。

在我的主要urls.py

urlpatterns = patterns('',
url(r'^blogg/', RedirectView.as_view(pattern_name="blog")),
url(r'^blog/', include("blog.urls", namespace="blog")),

上述解决方案为blogg的所有子网址返回HTTP 410(Gone)。我怀疑这是由于url中缺少RedirectView.as_view()参数。

提前感谢所有答案!

2 个答案:

答案 0 :(得分:2)

您将无法在urls.py中完全执行此操作。但是一个简单的视图函数可以工作:

url(r'^blogg/(?P<rest>.+)$', views.redirect_prefix),


from django.shortcuts import redirect

def redirect_prefix(request, rest):
    return redirect('/blog/{}'.format(rest))

答案 1 :(得分:1)

怎么样?
urlpatterns = patterns('',
url(r'^blogg/',include("blog.urls", namespace="ignoreme") ),
url(r'^blog/', include("blog.urls", namespace="blog")),

它们都应该从url中删除第一部分(blog /或blogg /),然后平等地管理其余部分。如果您将使用{% url "blog:this_view" %},那么在下一页上,您的客户将会在博客/部分上