1. ホーム
  2. django

[解決済み] djangoでurls.pyから直接名前付きurlパターンにリダイレクトする?

2022-05-26 13:18:25

質問

Djangoで、urls.pyから直接シンプルなリダイレクトを行うにはどうしたらよいでしょうか?もちろん、私はDRY原則を支持する、よく組織化された男なので、私はURLをハードコーディングするのではなく、それの名前のURLパターンに基づいてターゲットを取得したいと思います。

どのように解決するには?

Django 1.4 または 1.5 を使っている場合、これを実行することができます。

from django.core.urlresolvers import reverse_lazy
from django.views.generic import RedirectView

urlpatterns = patterns('',
    url(r'^some-page/$', RedirectView.as_view(url=reverse_lazy('my_named_pattern'), permanent=False)),
    ...

Django 1.6以上であれば、可能です。

from django.views.generic import RedirectView

urlpatterns = patterns('',
    url(r'^some-page/$', RedirectView.as_view(pattern_name='my_named_pattern', permanent=False)),
    ...

Django 1.9 では、デフォルトの値として permanent のデフォルト値が True から False に変更されました。このため、もしあなたが permanent キーワード引数を指定しないと、この警告が表示されることがあります。

RemovedInDjango19Warning: RedirectView.permanent' のデフォルト値は Django 1.9 で True から False に変更される予定です。この警告を消すには、明示的な値を設定してください。