Django URLリダイレクト 質問する

Django URLリダイレクト 質問する

他の 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=TrueHTTP 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')

おすすめ記事