使用django重写部分URL

使用django重写部分URL,django,url-redirection,django-urls,Django,Url Redirection,Django Urls,我有一个像 www.example.com/events/A/ www.example.com/events/B/ 等 我想换成 www.example.com/portal/A/以及类似内容 这可以在Apache级别实现,但我可以在django中使用一些中间件或其他东西来实现吗 我尝试过像这样使用重定向视图 url(r'events/', RedirectView.as_view(url='/portal/')), 但这只会在/portal处停止,事件/之后的任何内容都会被忽略 在djang

我有一个像

  • www.example.com/events/A/
  • www.example.com/events/B/
  • 我想换成

  • www.example.com/portal/A/以及类似内容
  • 这可以在Apache级别实现,但我可以在django中使用一些中间件或其他东西来实现吗

    我尝试过像这样使用重定向视图

    url(r'events/', RedirectView.as_view(url='/portal/')),
    
    但这只会在/portal处停止,事件/之后的任何内容都会被忽略


    在django中是否有办法做到这一点,所以您正在为旧url设置重定向,并将其移动到新url。你可以在几个地方做这件事。即web服务器级、应用程序级。 django的一种方法是在旧控制器中设置重定向,并将所有逻辑移到新视图中

    from django.core.urlresolvers import reverse
    from django.shortcuts import redirect, render_to_response
    
    
    def event_view(request, event_identifier):
        return redirect(reverse('portal-view', kwargs={'portal_identifier': event_identifier}), permanent=True)
    
    
    def portal_view(request, portal_identifier):
        return render_to_response('portal.html', {})
    

    别忘了永久重定向

    谢谢你的回复。在我的情况下,事件视图可用。因为我的URL是events/A、events/B等,所以我的视图是A()、B()等,它们大约有100个,我必须在每个视图中进行反向重定向。是否有一个中间件或其他东西可以将www.example.com/events/a更改为www.example.com/portal/a等您在这里没有遵循dry原则。你需要做一些清理或大量的测试。无论如何,看看这个。这会有帮助的