FormViewやDeleteViewを利用しているときに、次の例外が発生する事があります。
ImproperlyConfigured: No URL to redirect to. Provide a success_url.
これはsuccess_urlが未定義の時に発生します。今回はこの例外の発生原因と対処法を紹介します。
例外の発生原因
以下の様にDeleteViewを継承してUserを削除するクラスを定義します。
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例外が発生します。
ImproperlyConfigured: No URL to redirect to. Provide a success_url.
(翻訳)
リダイレクト先のURLがありません。success_urlを定義してください。
対処法
以下の2つの対処法があります。
- success_urlを定義する
- get_success_urlメソッドをオーバーライドする
通常は1つ目の対処法で問題ないですが、動的にリダイレクト先を変えたい場合は2つ目の対処法を利用します。
コメントを残す