2020年6月11日木曜日

Django urls.py 単純なリダイレクトの方法

Djangoで以下のようにリダイレクトしたい場合の設定方法

example.co.jp/abc/ ⇒ example.co.jp/xyz/
example.co.jp/abc/aiueo/ ⇒ example.co.jp/xyz/aiueo/

urls.py

from django.views.generic.base import RedirectView

urlpatterns = [

    url(r'^abc/(?P<path>.*)$', RedirectView.as_view(url='/xyz/%(path)s')),

]


Django 2.0以降のパスコンバーターを使った場合は以下ですが、
/abc/の後ろが空の場合が対応できない。
example.co.jp/abc/ ⇒ example.co.jp/xyz/ ×

from django.urls import path

urlpatterns = [

    path('abc/<path:pathstrings>', RedirectView.as_view(url='/xyz/%(pathstrings)s')),
# abc/以降が空の場合の以下を追加して対応
path('abc/', RedirectView.as_view(url='/xyz/')),
]

0 件のコメント:

コメントを投稿