app_nameのあるurlpatternsの場合、redirectはどうやる

app_name を使用してアプリケーションに名前をつけている場合、redirect を使用する際には、app_name と URL パターンの名前を組み合わせて指定することが一般的です。

例えば、tools アプリケーションの signup ページにリダイレクトする場合:

python
# myapp/views.py from django.shortcuts import redirect def some_view(request): # 他の処理... # toolsアプリケーションのsignupページにリダイレクト return redirect('tools:signup')

ここで、'tools:signup' の部分は app_name:URLパターン名 の形式です。これにより、app_name が変更されても正確なURLを指定できます。

リダイレクト先のURLを指定する際に、reverse 関数を使用しても同様の結果が得られます。

python
# myapp/views.py from django.urls import reverse from django.shortcuts import redirect def some_view(request): # 他の処理... # toolsアプリケーションのsignupページにリダイレクト return redirect(reverse('tools:signup'))

どちらの方法でも、tools アプリケーション内の urls.pyapp_name='tools' が設定されており、かつ name='signup' という名前が urlpatterns 内で指定されている必要があります。

未分類

Posted by ぼっち