posts - 431,  comments - 344,  trackbacks - 0

          通過將重定向存儲在數據庫中并將其視為 Django 模型對象,Django 重定向框架讓你能夠輕松地管理它們。比如說,你可以通過重定向框架告訴Django,把任何指向 /music/的請求重定向到 /sections/arts/music/。當你需要在站點中移動一些東西時,這項功能就派上用場了——網站開發者應該窮盡一切辦法避免出現壞鏈接。

          使用重定向框架

          安裝重定向應用程序必須遵循以下步驟:

          1.    將 'django.contrib.redirects'添加到 INSTALLED_APPS設置中。

          2.    將 'django.contrib.redirects.middleware.RedirectFallbackMiddleware'添加到 MIDDLEWARE_CLASSES設置中。

          3.    運行 manage.pysyncdb命令將所需的表安裝到數據庫中。

          manage.pysyncdb在數據庫中創建了一個 django_redirect表。這是一個簡單的查詢表,只有 site_id、 old_path和 new_path三個字段。

          你可以通過 Django 超級管理界面或者 Django 數據庫 API 來創建重定向。要了解更多信息,請參閱《增加、變更和刪除重定向》一節。

          一旦創建了重定向, RedirectFallbackMiddleware類將完成所有的工作。每當 Django 應用引發一個 404 錯誤,作為終極手段,該中間件將為所請求的 URL 在重定向數據庫中進行查找。確切地說,它將使用給定的 old_path以及 SITE_ID設置對應的站點 ID 查找重定向設置。(查閱前面的《多站點》一節可了解關于 SITE_ID和多站點框架的更多細節) 然后,它將執行以下兩個步驟:

          ·         如果找到了匹配項,并且 new_path非空,它將重定向到 new_path。

          ·         如果找到了匹配項,但 new_path為空,它將發送一個 410 (Gone) HTTP 頭信息以及一個空(無內容)響應。

          ·         如果未找到匹配項,該請求將如常處理。

          該中間件僅為 404 錯誤激活,而不會為 500 錯誤或其他任何狀態碼的響應所激活。

          注意必須考慮 MIDDLEWARE_CLASSES的順序。通常,你可以將 RedirectFallbackMiddleware放置在列表的最后,因為它是一種終極手段。

          注意

          如果同時使用重定向和簡單頁面回退中間件, 必須考慮先檢查其中的哪一個(重定向或簡單頁面)。我們建議將簡單頁面放在重定向之前(因此將簡單頁面中間件放置在重定向中間件之前),但你可能有不同想法。

          增加、變更和刪除重定向

          你可以兩種方式增加、變更和刪除重定向:

          通過超級管理界面

          如果已經激活了全自動的 Django 超級管理界面,你應該能夠在超級管理首頁看到重定向區域??梢韵窬庉嬒到y中其它對象一樣編輯重定向。

          通過 Python API

          django/contrib/redirects/models.py中的一個標準 Django 模型代表了重定向。因此,你可以通過 Django 數據庫 API 來存取重定向對象,例如:

          >>> from django.contrib.redirects.models import Redirect

          >>> from django.contrib.sites.models import Site

          >>> red = Redirect(

          ...     site=Site.objects.get(id=1),

          ...     old_path='/music/',

          ...     new_path='/sections/arts/music/',

          ... )

          >>> red.save()

          >>> Redirect.objects.get(old_path='/music/')

          <Redirect: /music/ ---> /sections/arts/music/>

          posted on 2008-12-05 15:43 周銳 閱讀(460) 評論(0)  編輯  收藏 所屬分類: Python
          主站蜘蛛池模板: 建水县| 沽源县| 修水县| 景洪市| 土默特左旗| 肥东县| 两当县| 广西| 永泰县| 黔西| 金华市| 茶陵县| 奉节县| 东城区| 金寨县| 田阳县| 台南市| 乐都县| 右玉县| 盘山县| 乌拉特中旗| 华宁县| 九龙坡区| 潼南县| 绥棱县| 莱西市| 泗洪县| 永春县| 克东县| 藁城市| 黔西县| 绩溪县| 太谷县| 彭州市| 二连浩特市| 城市| 农安县| 吉隆县| 正定县| 饶平县| 达日县|