FormViewやDeleteViewで”No URL to redirect to. Provide a success_url.”という例外が起きた時の対処法

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つ目の対処法を利用します。

スポンサーリンク
スポンサーリンク