Djangoでリダイレクトの設定をしてみましょう。Djangoに予め用意されている views.generic モジュールの RedirectView を使えば、簡単にリダイレクトの処理を実装できます。
目次
リダイレクトとは
ユーザーがあるURLにアクセスした時、別のURLへと転送することをリダイレクトと呼びます。
昨今ではフィッシング詐欺サイトへの誘導でよく見かけますが、本来はWebサイトのリニューアルに伴いURLが変更になった場合など、もう使えなくなった古いURLにユーザーがアクセスした場合に、新しいURLに誘導するために使われます。
リダイレクトの設定
実際にDjangoでリダイレクトの設定をしてみましょう。
現在このプロジェクトのトップページにはビューを用意していないため、アクセスすると次のように404エラーページが返されます。
ユーザーがこのページにアクセスした場合、bbsアプリケーションのトップページ(/bbs/)にアクセスするようにしてみます。
Djangoではルーティングをプロジェクト全体のルーティングと、アプリケーションごとのルーティングの2段階に分けて行っています。
ここでは /bbs/ よりも上の階層にアクセスがあった場合のリダイレクトを設定するため、ルーティングを記述するのは設定ディレクトリ /config/ の直下にある urls.py です。
from django.contrib import admin from django.urls import path, include from django.views.generic import RedirectView # インポート urlpatterns = [ path('admin/', admin.site.urls), path('hello/', include('hello.urls')), path('bbs/', include('bbs.urls')), path('', RedirectView.as_view(url='/bbs/')), # トップページにアクセスすると/bbs/にリダイレクト ]
リダイレクトを設定するにはこのように Django が予め用意してくれている views.generic モジュールの RedirectView をインポートし、決まりに従ってリダイレクト元のURLとリダイレクト先のURLを指定するだけです。
動作確認
Djangoコマンドを使ってサーバーを起動し、ブラウザで確認してみましょう。
http://127.0.0.1:8000/ にアクセスします。
http://127.0.0.1:8000/ にアクセスしようとすると自動的に /bbs/ に転送されました。リダイレクトの設定はこれだけです。