Djangのデータベースに登録画面(CreateView)を作ってから、ページ遷移先を指定せずに、登録ボタンを押したときに以下のエラーが発生します。
エラータイトル
No URL to redirect to. Either provide a url or define a get_absolute_url method on the Model.
このエラーの発生理由は、formを通じて、requestがサーバーに送られてもどのページを表示させればよいか指定されていないために発生します。
この解決法としては、
- URLの指定する方法
- modelでabsolute_urlを指定する方法
ここで➀のURLをどのようにしていするかの説明をしておきます。
viewの名前からURLをゲットするために「reverse_lazy」をつかう
Djangoは、指定されたURLからurls.pyの機能によって、対応するviewを取得し表示するのが通常の機能です。
しかし、表示しているviewの画面Aから違うviewの画面Bに移動する際に、直接URLを記述するのは非常にナンセンスですね。
そんな時に、通常の流れとは逆で、指定しているviewからそのURLを取得できれば、view間の画面移動が簡単に指定できるようになるのです。
urls.pyのviewに名前を付ければ、urlの代わりにあるページを指定することでができるのです。
具体的な記述方法は、以下のurlsとviewを参考にしてください。