他の URL のいずれにも一致しないトラフィックをホームページにリダイレクトするにはどうすればよいですか?
urls.py:
urlpatterns = patterns('',
url(r'^$', 'macmonster.views.home'),
#url(r'^macmon_home$', 'macmonster.views.home'),
url(r'^macmon_output/$', 'macmonster.views.output'),
url(r'^macmon_about/$', 'macmonster.views.about'),
url(r'^.*$', 'macmonster.views.home'),
)
現状では、最後のエントリはすべての「その他」のトラフィックをホームページに送信しますが、HTTP 301または302。
ベストアンサー1
クラスベースのビューを試すことができますRedirectView
from django.views.generic.base import RedirectView
urlpatterns = patterns('',
url(r'^$', 'macmonster.views.home'),
#url(r'^macmon_home$', 'macmonster.views.home'),
url(r'^macmon_output/$', 'macmonster.views.output'),
url(r'^macmon_about/$', 'macmonster.views.about'),
url(r'^.*$', RedirectView.as_view(url='<url_to_home_view>', permanent=False), name='index')
)
url
のように、<url_to_home_view>
実際に URL を指定する必要があることに注意してください。
permanent=False
は HTTP 302 を返し、 はpermanent=True
HTTP 301 を返します。
代わりに、django.shortcuts.redirect
Django 2+ バージョンの更新
Django 2 以降では、url()
は非推奨となり、 に置き換えられました。使用方法は正規表現の場合re_path()
とまったく同じです。正規表現を必要としない置換の場合は、 を使用します。url()
path()
from django.urls import re_path
re_path(r'^.*$', RedirectView.as_view(url='<url_to_home_view>', permanent=False), name='index')