導入
ブラウザで URL を開くと、なぜ画面が表示されるのでしょうか。その裏側には「リクエストを受け取って、レスポンスを返す」という単純な往復があります。Django はこの往復を、きれいに整理して書けるようにしてくれる道具です。
説明
Web サイトを開くときの流れは、こうなっています。
flowchart LR B["ブラウザ"] -->|"① リクエスト(GET /)"| S["Webサーバー / Django"] S -->|"② レスポンス(HTML)"| B
- ブラウザが「このURLをください」とリクエストを送る
- サーバー(Django)が中身を組み立ててレスポンス(多くは HTML)を返す
- ブラウザがそれを描画する
Django はこの「②の中身を作る」部分を担当します。そして Django は、役割を3つに分けて考える MTV という構成でできています。
flowchart LR U["リクエスト<br/>URL"] --> URLS["URLディスパッチャ<br/>urls.py"] URLS --> V["ビュー (View)<br/>処理を書く関数"] V --> M["モデル (Model)<br/>データベース"] V --> T["テンプレート (Template)<br/>画面の見た目"] T --> R["レスポンス<br/>HTML"]
- モデル(Model) … データベースを Python のクラスとして表す。データの保存・取得を担当。
- テンプレート(Template) … 画面の見た目(HTML の雛形)。
{{ 変数 }}を埋め込む。 - ビュー(View) … リクエストを受けて、モデルからデータを取り、テンプレートに流し込んでレスポンスを返す「司令塔」。
多くのフレームワークで言う MVC とほぼ同じで、Django では「コントローラ」にあたる部分をビューが担い、URL の割り当ては urls.py が受け持ちます。
この章から、この流れを実際にコードで組み立てていきます。最初は一番小さな「ビュー」だけの Django から始めます。