FormViewやDeleteViewを利用しているときに、次の例外が発生する事があります。
1 | ImproperlyConfigured: No URL to redirect to. Provide a success_url. |
これはsuccess_urlが未定義の時に発生します。今回はこの例外の発生原因と対処法を紹介します。
例外の発生原因
以下の様にDeleteViewを継承してUserを削除するクラスを定義します。
1 2 3 4 5 6 7 8 | from django.urls import reverse_lazy from django.views.generic.edit import DeleteView from django.contrib.auth.models import User class UserDeleteView(DeleteView): model = User success_url = reverse_lazy( 'user-list' ) |
DeleteViewやFormViewでは上記の様にsuccess_urlを定義する必要があります。
定義していない場合はImproperlyConfigured例外が発生します。
1 2 3 4 | ImproperlyConfigured: No URL to redirect to. Provide a success_url. (翻訳) リダイレクト先のURLがありません。success_urlを定義してください。 |
対処法
以下の2つの対処法があります。
- success_urlを定義する
- get_success_urlメソッドをオーバーライドする
通常は1つ目の対処法で問題ないですが、動的にリダイレクト先を変えたい場合は2つ目の対処法を利用します。
コメントを残す