redirects アプリケーション
| revision-up-to: | 5613 (0.97pre SVN) |
|---|
Django にはオプションとして redirects アプリケーションがついてきます.この アプリケーションを使うと,リダイレクト先をデータベースに保存し,適切なリダ イレクト処理をおこなってくれます.
インストール
redirects アプリケーションをインストールするには,以下の 3 ステップの操作を 行います:
- INSTALLED_APPS 設定に "django.contrib.redirects" を追加します.
- MIDDLEWARE_CLASSES 設定に "django.contrib.redirects.middleware.RedirectFallbackMiddleware" を追加します.
- manage.py syncdb を実行します.
動作の仕組み
manage.py syncdb を実行すると,データベースに django_redirects とい う名のテーブルを作成します.このテーブルは site_id, old_path および new_path というフィールドを持った検索テーブルです.
全ての処理は RedirectFallbackMiddleware で行われます. Django アプリケー ション内で 404 エラーが送出されると,このミドルウェアは最後の手段として redirects データベースにリクエスト URL がないか調べます.特に,SITE_ID_ 設 定に対応するサイト ID を持った old_path を探します.
- 一致するエントリが見つかり,かつ new_path が空でなければ new_path にリダイレクトします.
- 一致するエントリは見つかったが new_path が空の場合には, 410 ("Gone") HTTP ヘッダと空の (コンテンツのない) 応答を送信します.
- 一致するエントリがなければ,リクエストを通常通りに処理します.
ミドルウェアが起動されるのは 404 エラーに対してだけで, 500 やその他の状態 コードでは起動されません.
MIDDLEWARE_CLASSES の設定順には注意が必要です.一般に, RedirectFallbackMiddleware はリクエスト処理の最終手段なので,リストの末 尾に指定します.
ミドルウェアについての詳しい情報は ミドルウェアのドキュメント を参照して ください.
リダイレクトの追加,変更,削除
admin インタフェースから
Django の自動 admin インタフェースを有効にしていれば, "Redirects" という名 前のセクションが admin のインデクスページに表示されているはずです.Django の他のオブジェクトと同じように編集してください.
Python API から
リダイレクトは標準の Django モデル で表現されており, django/contrib/redirects/models.py におさめられています. Django データベース API を使ってリダイレクトオブジェクトにアクセスできま す.