gpt4 book ai didi

django - 在 django 中处理旧 URL 的最佳方法

转载 作者:行者123 更新时间:2023-12-03 10:31:18 24 4
gpt4 key购买 nike

我在一个大型新闻发布平台上工作。基本上用django从零开始重建一切。现在我们几乎准备好发布了,我需要处理旧的 url 重定向。考虑到我必须处理十分之一的旧网址,最好的方法是什么?

逻辑应该是这样工作的:如果没有匹配的现有 urls/views 运行该 url 彻底的遗留重定向 urls 模式/ View ,以查看它是否可以在返回 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 和 View 。不要将您的旧网址包含在主网址结构中。这个中间件为你做这件事,但方式有点不同。

关于django - 在 django 中处理旧 URL 的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23489050/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com