Python

Djangoのreverse_lazyって何?その目的って?

Djangのデータベースに登録画面(CreateView)を作ってから、ページ遷移先を指定せずに、登録ボタンを押したときに以下のエラーが発生します。

エラータイトル

No URL to redirect to.  Either provide a url or define a get_absolute_url method on the Model.

このエラーの発生理由は、formを通じて、requestがサーバーに送られてもどのページを表示させればよいか指定されていないために発生します。

この解決法としては、

  1. URLの指定する方法
  2. 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を参考にしてください。

ABOUT ME
den
完全独学でWEBデザインを無謀にも挑戦している中年男。 工場勤務の会社員で3児の父。 チャレンジを忘れず、妻に怒られても心はおれず。 有益な情報を発信し、これを見ている人の為になればと思っています。
関連記事一覧