天天看點

django 1.8 官方文檔翻譯: 14-4-1 重定向應用重定向應用

重定向應用

Django 原生自帶一個可選的重定向應用。它将簡單的重定向儲存到資料庫中并處理重定向。它預設使用HTTP 響應狀态碼

301 Moved Permanently

安裝

請依照下面的步驟安裝重定向應用:

  1. 確定

    django.contrib.sites

    架構已經安裝。
  2. 添加’

    django.contrib.redirects

    ’ 到

    INSTALLED_APPS

    設定中。
  3. django.contrib.redirects.middleware.RedirectFallbackMiddleware

    MIDDLEWARE_CLASSES

  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

    不為空,它将使用301(“Moved Permanently”)重定向到

    new_path

    。你可以子類化

    RedirectFallbackMiddleware

    并設定

    response_redirect_class

    django.http.HttpResponseRedirect

    來使用302 Moved Temporarily 重定向。
  • 如果找到比對的記錄而

    new_path

    為空,它将發送一個410 (“Gone”) HTTP 頭和空(沒有内容的)響應。
  • 如果沒有找到比對的記錄,請求将繼續正常處理。

這個中間件隻針對404 錯誤啟用 —— 不能用于500 或其它狀态碼。

注意

MIDDLEWARE_CLASSES

的順序很重要。通常可以将

RedirectFallbackMiddleware

放在清單的最後,因為它最後執行。

更多的資訊可以閱讀

中間件的文檔

如何添加、修改和删除重定向

通過Admin 接口

如果你已經啟用Django 自動生成的

Admin

接口,你應該可以在

Admin

的首頁看到“Redirects”部分。編輯這些重定向,就像編輯系統中的其它對象一樣。

通過Python API

class models.Redirect

重定向通過一個标準的Django 模型表示,位于

django/contrib/redirects/models.py

。你可以通過Django 的資料庫API 通路重定向對象。

中間件

class middleware.RedirectFallbackMiddleware

你可以通過建立

RedirectFallbackMiddleware

的子類并覆寫

response_gone_class

和/或

response_redirect_class

來修改中間件使用的

HttpResponse

類。

response_gone_class

New in Django 1.7.           

HttpResponse

類,用于找不到請求路徑的

Redirect

或找到的

new_path

值為空的時候。

預設為

HttpResponseGone

response_redirect_class

New in Django 1.7.           

處理重定向的

HttpResponse

HttpResponsePermanentRedirect

譯者: Django 文檔協作翻譯小組 ,原文: Redirects 本文以 CC BY-NC-SA 3.0 協定釋出,轉載請保留作者署名和文章出處。 人手緊缺,有興趣的朋友可以加入我們,完全公益性質。交流群:467338606。