Djangoのモデル、フォーム、ビューについてどのように連携しているのかを理解する為にまとめてみました。
参考書にいろいろな解説がありますがわかりやすくする為に料理のレシピアプリを例にしてみます。
フォームは表示項目や調理方法、モデルはレシピとなる
WEBアプリではユーザーの入力値に合わせて動的にHTMLを作成してブラウザに表示してもらう必要があります。ここで、料理名をURLとして、WEBアプリでレシピを表示することを考えてみましょう。
- model →料理のレシピ
- form→レシピを記載した料理方法や料理名の検索
![](https://denblog.info/wp-content/uploads/2022/01/e9dc7be1-08cb-43c4-854a-025496452d5e-1024x576.png)
では、さっそくユーザーが料理名(URL)でそのレシピを表示してみようと試みてみた時にどうなるかをみてみます。
カレーという料理名を例にしてみましょう。
まずはユーザーから受け取ったURLから、適切なviewにリクエストする
![](https://denblog.info/wp-content/uploads/2022/01/b1cc2867-ddc5-4685-9360-88797db67129-1024x576.png)
色々な料理名(URL)のviewのうちurls.pyがマッチングを行い、適切なviewを選択します。
formはviewからの依頼で入出力の設定や表示項目をきめる
![](https://denblog.info/wp-content/uploads/2022/01/48efa8e0-a6ba-44c2-8223-ea2b0b573750-1024x576.png)
viewからリクエストがあった formは、表示する型式や内容を取捨選択する事ができます。ただし、その内容(レシピ)については、formは分かっていません。その為、modelがデータベースから読み取った内容(レシピ)を formに教えてあげる必要があります。
viewは formから受け取った情報をブラウザで表示する為にtemplateにHTML作成依頼を行う
![](https://denblog.info/wp-content/uploads/2022/01/909db2b5-2d06-448d-9f20-2b13648ae5fd-1024x576.png)
viewから受け取った formの情報(レシピ)をtemplateが、うまくブラウザで表示できるようにHTMLコードを作成します。
viewがHTMLを出力して、ブラウザで表示する
![](https://denblog.info/wp-content/uploads/2022/01/c1aa23cf-36d8-4f57-a72c-54068be4ded3-1024x576.png)
ブラウザとの窓口は、受付はurls.pyであり、連絡はviewが担うことになります。