加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

在django中处理遗留URL的最佳方法

发布时间:2020-12-20 13:42:20 所属栏目:Python 来源:网络整理
导读:我正在制作一个重要的新闻发布平台.基本上用 django从零开始重建所有东西.现在我们已经准备好启动了,我需要处理遗留的URL重定向.考虑到我必须处理成千上万的遗留网址,最好的方法是什么? 逻辑应该像这样工作:如果匹配的现有url / views都没有运行该url彻底
我正在制作一个重要的新闻发布平台.基本上用 django从零开始重建所有东西.现在我们已经准备好启动了,我需要处理遗留的URL重定向.考虑到我必须处理成千上万的遗留网址,最好的方法是什么?

逻辑应该像这样工作:如果匹配的现有url / views都没有运行该url彻底传递Redirect urls模式/视图,以查看它是否可以在返回404错误之前提供一些重定向到新url.

我怎么做?

解决方法

真棒,通过使用自定义中间件实现:

from django.http import Http404
from legacy.urls import urlpatterns

class LegacyURLsMiddleware(object):

    def process_response(self,request,response):
        if response.status_code != 404:
            return response
        for resolver in urlpatterns:
            try:
                match = resolver.resolve(request.path[1:])
                if match:
                    return match.func(request,*match.args,**match.kwargs)
            except Http404:
                pass
        return response

只需将此中间件添加为MIDDLEWARE_CLASSES列表中的最后一个中间件即可.然后在遗留应用程序中使用urls.py文件来声明将处理永久重定向的旧URL和视图.请勿将旧网址包含在主网址结构中.这个中间件为你做,但有点不同.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读