重定向应用程序

Django带有一个可选的重定向应用程序。 它允许您将简单的重定向存储在数据库中,并为您处理重定向。 It uses the HTTP response status code 301 Moved Permanently by default.

安装¶ T0>

要安装重定向应用程序,请按照下列步骤操作:

  1. 确保已安装django.contrib.sites框架is installed
  2. 'django.contrib.redirects'添加到INSTALLED_APPS设置中。
  3. 'django.contrib.redirects.middleware.RedirectFallbackMiddleware'添加到MIDDLEWARE设置中。
  4. 运行命令manage.py migrate

它如何工作

manage.py migrate creates a django_redirect table in your database. 这是一个包含site_idold_pathnew_path字段的简单查找表。

RedirectFallbackMiddleware完成所有的工作。 每当Django应用程序出现404错误时,这个中间件都会检查重定向数据库中的请求URL作为最后的手段。 Specifically, it checks for a redirect with the given old_path with a site ID that corresponds to the SITE_ID setting.

  • If it finds a match, and new_path is not empty, it redirects to new_path using a 301 (“Moved Permanently”) redirect. 您可以将RedirectFallbackMiddleware子类并将response_redirect_class设置为django.http.HttpResponseRedirect以使用302 移动 暂时改为重定向。
  • If it finds a match, and new_path is empty, it sends a 410 (“Gone”) HTTP header and empty (content-less) response.
  • 如果找不到匹配,则继续像往常一样处理该请求。

中间件只能被激活404s - 不是500s或任何其他状态码的响应。

请注意,MIDDLEWARE的顺序很重要。 一般来说,你可以把RedirectFallbackMiddleware放在列表的最后,因为这是最后的手段。

有关中间件的更多信息,请阅读middleware docs

如何添加,更改和删除重定向

通过管理界面

如果您已经激活了自动Django管理界面,您应该在管理索引页面上看到“重定向”部分。 在编辑系统中的任何其他对象时编辑重定向。

通过Python API

楷模。重定向 T0> ¶ T1>

重定向由一个标准的Django model表示,它位于django / contrib / redirects / models.py中。 您可以通过Django database API访问重定向对象。

中间件¶ T0>

中间件。 RedirectFallbackMiddleware T0> ¶ T1>

You can change the HttpResponse classes used by the middleware by creating a subclass of RedirectFallbackMiddleware and overriding response_gone_class and/or response_redirect_class.

response_gone_class T0> ¶ T1>

未找到请求路径的Redirect时使用的HttpResponse类,或具有空白new_path值。

默认为HttpResponseGone

response_redirect_class T0> ¶ T1>

处理重定向的HttpResponse类。

默认为HttpResponsePermanentRedirect