djangoでRedirectViewを使ってみる

2020年12月21日

djangoでRedirectView

任意のURLにリダイレクトすることに特化した基本汎用ビュークラスです。

config/urls.py


from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('app/', include('app.urls')),
]

app/urls.py


from django.urls import path
from . import views

app_name = 'app'
urlpatterns = [
        path('', views.index, name='index'),
        path('redirected/', views.redirected, name='redirected'),
        path('redirect/', views.redirect, name='redirect'),
]

app/views.py


from django.shortcuts import render
from django.views import View
from django.views.generic import TemplateView
from django.views.generic import RedirectView


class IndexView(TemplateView):
	template_name = 'app/index.html'

	def get_context_data(self, **kwargs):
		context = super().get_context_data(**kwargs)
		context['message'] = 'hello_index_page!!'
		return context
index = IndexView.as_view()

class RedirectedView(TemplateView):
	template_name = 'app/redirected.html'

	def get_context_data(self, **kwargs):
		context = super().get_context_data(**kwargs)
		context['message'] = 'hello_redirected_page!!'
		return context
redirected = RedirectedView.as_view()

class RedirectView(RedirectView):
	url = '/app/redirected/'
redirect = RedirectView.as_view()

実行結果


#ブラウザに下の通りのURLを打ち込んだら
http://[IP]:[PORT]/app/redirect/
#下のURLにリダイレクトされました
http://[IP]:[PORT]/app/redirected/

2020年12月21日