重定向应用程序
¶
Django带有一个可选的重定向应用程序。它允许您将简单的重定向存储在数据库中
并处理重定向。它默认使用HTTP响应状态
码。301 Moved Permanently
安装¶
要安装重定向应用程序,请按照下列步骤操作:
1.确保django.contrib.sites
框架 已安装。
2.添加'django.contrib.redirects'
到您的INSTALLED_APPS
设置。
3.添加'django.contrib.redirects.middleware.RedirectFallbackMiddleware'
到您的MIDDLEWARE
设置。
4.运行该命令。manage.py migrate
它如何工作¶
manage.py migrate
django_redirect
在数据库中创建一个表。这是一个简单的查找
表site_id
,old_path
和new_path
领域。
在RedirectFallbackMiddleware
完成所有的工作。每当Django应用程序出现404错误时,该中
间件都会检查重定向数据库中的请求URL作为最后的手段。具体来说,它会检查具有
与old_path
该SITE_ID
设置相对应的站点ID 的给定重定向。
如果它找到匹配项并且new_path
不为空,则它将重定向到 new_path
使用301(“永久移
动”)重定向。你也可以继承 RedirectFallbackMiddleware
,并设
置 response_redirect_class
来django.http.HttpResponseRedirect
使用 重定向代替。302 Moved Temporarily
如果它找到一个匹配项并且new_path
是空的,它会发送410(“Gone”)HTTP头和空(无
内容)响应。
如果找不到匹配项,请继续照常处理。
中间件只能在404s中激活 - 不适用于500s或任何其他状态码的响应。
请注意MIDDLEWARE
事项的顺序。一般来说,你可以放在 RedirectFallbackMiddleware
列表的最后,
因为这是最后的手段。
有关中间件的更多信息,请阅读中间件文档。
添加,编辑和删除重定向¶
通过Python API¶
-
类
-
重定向由一个标准的Django模板表示,该模板在django / contrib / redirects /
-
-
models.py中定义。您可以通过Django数据库API访问重定向对象。
models.
Redirect
¶
中间件¶
-
类
-
您可以
HttpResponse
通过创建或RedirectFallbackMiddleware
重载response_gone_class
或属性的子类来-
-
类
HttpResponse
在没有使用Redirect
时发现要求路径或者它有一个空值new_path
。默认值是
HttpResponseGone
。 -
response_gone_class
¶-
HttpResponse
处理重定向的类。 -
response_redirect_class
¶
-
-
修改中间件使用
-
-
的类
response_redirect_class
。
middleware.
RedirectFallbackMiddleware
¶