Djangoを学んでいく中で、結局Djangoって普通のウェブサイトと何が違うの?と思うこともあるかと思います。
そこで今回は、普通のウェブサイトとDjangoの違いについて、具体例を使ってみていきましょう。
普通のウェブサイト:ドーナツ屋、Django:ラーメン屋というイメージ
どういうことだ?と思われる方も多いかもしれませんが、普通のウェブサイトはドーナツ屋、Djangoはラーメン屋というイメージを持つと、理解しやすいです。
これから、それぞれの場合について具体的にみていきましょう。
普通のウェブサイトの場合
まずは、普通のウェブサイトです。
普通のウェブサイトの場合、以下のようなイメージです。
ここで、ブラウザがドーナツを頼む人。ウェブサーバーがドーナツ屋の店員と考えてみましょう。
ドーナツは注文を受けてから作るということは基本的にはありません。
ですので、お店にならんでいるドーナツの中から、好みの商品を選び、欲しいドーナツを店員に伝えます。
すると、ドーナツ屋の店員は、頼まれたドーナツを取ってそれを注文した人に渡します。
つまり、ドーナツ屋の場合、注文する商品と、その対象となるドーナツが一対一の関係になります。
まずはこのイメージを持ちましょう。
Djangoの場合
次はDjangoの場合です。
Djangoの場合、基本的には以下のようなイメージです。
Djangoの場合は、上でお伝えした通りラーメン屋をイメージしてみましょう。
ブラウザがラーメンを注文する人、サーバーが券売機というイメージです。
そして、Djangoの場合はさらにurls.py、views.py、template、データベースがありますが、イメージとしてはこんな形です。
- urls.py : ラーメンの注文を受けて、作るラーメンを指示する人
- views.py : ラーメンを作るコック
- template : ラーメンのどんぶりの器(大中小のサイズあり)
- データベース : ラーメンを作るための食材が入っている場所
これも図にしてみましょう。
ラーメン屋とドーナツ屋の違いは、「注文を受けてから商品を作るのか、注文を受ける前から商品ができているのか」です。
ラーメン屋の場合、事前にラーメンを作っているということはありえません。
ですので、注文を受けてから商品を作ります。
この時、注文をする人は好みに応じて色々な注文を出すことができます。
例えば、「麺を大盛にしてほしい」、「野菜は少なめにして欲しい」といったイメージです。
こういった細かい注文はドーナツ屋の場合はできないということを改めて頭に入れておきましょう。
つまり、ラーメン屋の場合は注文と商品が一対一の関係になっているのではなく、注文に応じて中で何かをして(ラーメン屋の場合はラーメンを作って)、完成したものを注文した人に戻す。という形です。
あらためて、普通のウェブサイトとDjangoの違い
ここで、あらためて普通のウェブサイトとDjangoの違いについて考えていきましょう。
普通のウェブサイトの場合、サーバーの中に入っているhtmlファイルをレスポンスとして返すだけです。
つまり、htmlファイルの中身を変えることはできません。
その一方で、Djangoの場合は、リクエストに応じて、使うhtmlファイルや、そのhtmlファイルに表示させるデータを柔軟に入れ替えることができるのです。
*なお、ここではウェブサイトとDjangoの違い、という表現にしていますが、厳密にはウェブサイトとDjangoは比較の対象ではないこと、お含みおき下さい。
普通のウェブサイトとDjangoの違いのまとめ
(1) 普通のウェブサイトはドーナツ屋のイメージ
(2) Djangoはラーメン屋のイメージ
(3) つまり、一対一の関係か、内部で何か処理が行われるかの違い