在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Python/ 重定向應(yīng)用
編寫自定義存儲(chǔ)系統(tǒng)
高級(jí)
編寫你的第一個(gè)Django應(yīng)用,第5部分
視圖層
Django管理文檔生成器
編寫你的第一個(gè) Django 程序 第3部分
編寫你的第一個(gè)Django應(yīng)用,第6部分
模型層
中間件
測(cè)試
數(shù)據(jù)庫(kù)訪問優(yōu)化
文件上傳
中間件
驗(yàn)證器
基于類的內(nèi)建通用視圖
部署靜態(tài)文件
使用Django認(rèn)證系統(tǒng)
高級(jí)教程:如何編寫可重用的應(yīng)用
Model 類參考
Django 初探
使用Django輸出PDF
模型的實(shí)例
模型
文件上傳
進(jìn)行原始的sql查詢
面向程序員
中間件
編寫數(shù)據(jù)庫(kù)遷移
TemplateResponse 和 SimpleTemplateResponse
異常
Django中的測(cè)試
基礎(chǔ)
管理器
File對(duì)象
URL調(diào)度器
加密簽名
國(guó)際化和本地化
日志
查詢集
django-admin 和 manage.py
使用基于類的視圖處理表單
聚合
內(nèi)建基于類的視圖的API
如何使用會(huì)話
部署 Django
其它
其它核心功能
高級(jí)
Django中的密碼管理
模型元選項(xiàng)
按需內(nèi)容處理
查找 API 參考
高級(jí)
Django 的快捷函數(shù)
Django 的設(shè)置
Admin
開發(fā)過(guò)程
新手入門
基于類的視圖
模型實(shí)例參考
信號(hào)
表單素材 ( <code>Media</code> 類)
自定義查找
常見的網(wǎng)站應(yīng)用工具
模型
django.contrib.humanize
Django模版語(yǔ)言
點(diǎn)擊劫持保護(hù)
管理操作
編寫你的第一個(gè) Django 程序 第2部分
Django安全
模式編輯器
多數(shù)據(jù)庫(kù)
部署
基于類的視圖
內(nèi)建的視圖
視圖裝飾器
面向設(shè)計(jì)師
編寫視圖
應(yīng)用程序
如何使用WSGI 部署
參考
表單 API
文件儲(chǔ)存API
認(rèn)證
國(guó)際化和本地化
錯(cuò)誤報(bào)告
基礎(chǔ)
基礎(chǔ)
將遺留數(shù)據(jù)庫(kù)整合到Django
教程
Django異常
編寫你的第一個(gè) Django 程序 第4部分
遷移
分頁(yè)
重定向應(yīng)用
表單
從零開始
為模型提供初始數(shù)據(jù)
設(shè)置
使用Django輸出CSV
關(guān)聯(lián)對(duì)象參考
使用表單
Django 中的用戶認(rèn)證
快速安裝指南
安全問題歸檔
數(shù)據(jù)庫(kù)函數(shù)
編寫自定義的django-admin命令
高級(jí)教程
管理文件
格式本地化
基于類的通用視圖 —— 索引
安全
系統(tǒng)檢查框架
為Django編寫首個(gè)補(bǔ)丁
模板層
Widgets
編寫你的第一個(gè) Django 程序 第1部分
執(zhí)行查詢

重定向應(yīng)用

Django 原生自帶一個(gè)可選的重定向應(yīng)用。它將簡(jiǎn)單的重定向保存到數(shù)據(jù)庫(kù)中并處理重定向。它默認(rèn)使用HTTP 響應(yīng)狀態(tài)碼301 Moved Permanently。

安裝

請(qǐng)依照下面的步驟安裝重定向應(yīng)用:

  1. 確保django.contrib.sites 框架已經(jīng)安裝。
  2. 添加'django.contrib.redirects' 到 INSTALLED_APPS 設(shè)置中。
  3. 添加'django.contrib.redirects.middleware.RedirectFallbackMiddleware' 到MIDDLEWARE_CLASSES 設(shè)置中。
  4. 運(yùn)行命令manage.py migrate。

它是如何工作的

manage.py migrate 在數(shù)據(jù)庫(kù)中創(chuàng)建一張django_redirect 表。它是一張簡(jiǎn)單的查詢表,具有site_id、old_pathnew_path 字段。

RedirectFallbackMiddleware 完成所有的工作。每當(dāng)Django 的應(yīng)用引發(fā)一個(gè)404 錯(cuò)誤,該中間件將到重定向數(shù)據(jù)庫(kù)中檢查請(qǐng)求的URL。它會(huì)根據(jù)old_pathSITE_ID 設(shè)置的站點(diǎn)ID 查找重定向的路徑。

  • 如果找到匹配的記錄且new_path不為空,它將使用301(“Moved Permanently”)重定向到new_path 。你可以子類化RedirectFallbackMiddleware 并設(shè)置 response_redirect_classdjango.http.HttpResponseRedirect 來(lái)使用302 Moved Temporarily 重定向。
  • 如果找到匹配的記錄而new_path 為空,它將發(fā)送一個(gè)410 (“Gone”) HTTP 頭和空(沒有內(nèi)容的)響應(yīng)。
  • 如果沒有找到匹配的記錄,請(qǐng)求將繼續(xù)正常處理。

這個(gè)中間件只針對(duì)404 錯(cuò)誤啟用 —— 不能用于500 或其它狀態(tài)碼。

注意MIDDLEWARE_CLASSES 的順序很重要。通??梢詫?code>RedirectFallbackMiddleware 放在列表的最后,因?yàn)樗詈髨?zhí)行。

更多的信息可以閱讀中間件的文檔

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

通過(guò)Admin 接口

如果你已經(jīng)啟用Django 自動(dòng)生成的Admin 接口,你應(yīng)該可以在Admin 的主頁(yè)看到“Redirects”部分。編輯這些重定向,就像編輯系統(tǒng)中的其它對(duì)象一樣。

通過(guò)Python API

class models.Redirect

重定向通過(guò)一個(gè)標(biāo)準(zhǔn)的Django 模型表示,位于django/contrib/redirects/models.py。你可以通過(guò)Django 的數(shù)據(jù)庫(kù)API 訪問重定向?qū)ο蟆?/p>

中間件

class middleware.RedirectFallbackMiddleware

你可以通過(guò)創(chuàng)建RedirectFallbackMiddleware 的子類并覆蓋response_gone_class 和/或response_redirect_class 來(lái)修改中間件使用的HttpResponse類。

response_gone_class

New in Django 1.7.

HttpResponse 類,用于找不到請(qǐng)求路徑的Redirect或找到的new_path 值為空的時(shí)候。

默認(rèn)為HttpResponseGone。

response_redirect_class

New in Django 1.7.

處理重定向的HttpResponse 類。

默認(rèn)為HttpResponsePermanentRedirect。

譯者:Django 文檔協(xié)作翻譯小組,原文:Redirects。

本文以 CC BY-NC-SA 3.0 協(xié)議發(fā)布,轉(zhuǎn)載請(qǐng)保留作者署名和文章出處。

Django 文檔協(xié)作翻譯小組人手緊缺,有興趣的朋友可以加入我們,完全公益性質(zhì)。交流群:467338606。