No URL to redirect to. Either provide a url or define a get_absolute_url method on the Model 対処法
Djangoでsuccess_urlを設定しようとしたのですが、なかなかに錯綜してしまったのでメモ。
やるべきことはかなりシンプルなのに中々答えに辿り着けず時間がかかってしまいました。
エラー内容
DjangoでCreateReviewを使ったデータ登録後に遷移させたいページを設定してる際、やたら以下エラーが出てしまい困りました。
(エラー文)
No URL to redirect to. Either provide a url or define a get_absolute_url method on the Model
結果的にはただ、success_urlの書き方という話になってしまいますが、メモ。
対処法(success_urlの書き方)
処理成功後に静的なページへ遷移したい場合
from django.urls import reverse_lazy
success_url = reverse_lazy("app名:urls.pyで設定したname")
処理成功後urlから取得した変数を使用して動的ページへ遷移したい場合
from django.urls import reverse_lazy
class StoreReview(CreateView):
template_name = "app名/example.html"
model = Model
fields = (
"field",
)
def get_success_url(self):
return reverse_lazy(
"app名:urls.pyで設定したname", kwargs={"pk": self.kwargs["pk"]}
)
ぐぐってたらmodels.pyをいじるとか結構色々出てきたのですが
これだけ抑えておけばエラーは解消され、無事テーブルにデータ登録後の画面遷移ができました。嬉
Author And Source
この問題について(No URL to redirect to. Either provide a url or define a get_absolute_url method on the Model 対処法), 我々は、より多くの情報をここで見つけました https://qiita.com/yuka39/items/14001f973ee944b0baf2著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .