前のパートに戻る 完了して次のパートへ  

  2-1 MTVについて学ぼう

Djangoを使ったアプリーケーションを開発する上で、MTVを理解することは非常に重要です。

Djangoのアプリーケーションは、主にモデル・テンプレート・ビューの3つの役割によって構成されており、これらの頭文字をとってMTVモデル、あるいはMTVフレームワークと呼ばれています。

MTVの考え方は実際にコードを書くことで理解できますが、最初にざっくりと全体像をつかめたほうが理解しやすいので、本カリキュラムで触れておきます。

ちなみに、DjangoのMTVはRubyのWebフレームワークであるRailsのMVCとほぼ同義です。Rails経験のある方は、MVCのことだと思ってもらって差し支えないでしょう。(ただし、Viewの意味合いが異なるので注意が必要です)

リクエストとレスポンス


MTVの話の前に、ブラウザとWebサーバーの基本的な動作について押さえておきましょう。

  1. ユーザーがWebサイトにアクセスすると、ブラウザからWebサーバーに対して リクエスト が送信されます。
  2. Webサーバーは、受け取ったリクエストに対応する レスポンス をブラウザに対して送信します。
  3. ブラウザは、受け取ったレスポンスを元にWebサイトを表示します。

このような流れでブラウザとWebサーバーがリクエストとレスポンスを送受信し、ユーザーはWebサイトを閲覧することができます。

ルーティングとビュー


リクエストに対応するレスポンスを返すために、Djangoでは下図のような順番で処理を行います。

ルーティングとは、受信したリクエストの振り分けを行う処理のことです。実際にはURLの定義を行い、リクエストのURLから処理を振り分けます。 ビューは、リクエストを生成する中枢に位置し、他の様々な役割を媒介する役割を持ちます。 モデルは、Djangoとデータベースを取りつなぐ役割を担い、データベースからデータを取り出す処理を行います。 テンプレートは、実際のリクエストを生成する処理を担います。実際には、変数埋め込みができるように拡張したHTMLファイルのことを指します。

上図のように、ルーティングで指定されたビューを中心に、モデルから必要なデータを引っ張り、そのデータを使ってテンプレートでHTMLファイルを定義し、レスポンスを返すような流れになります。

また、必ずしもモデルとテンプレートが必要というわけではなく、サイトのトップページのようにデータベース上のデータを必要としないページの際はモデルを使用しませんし、検証用に(Hello Worldなどの)文字列をレスポンスとして返したい場合はテンプレートを使わない場合があります。しかしほとんどの場合は、ビューと一緒にモデルとテンプレートを使うことになるでしょう。

議論

0 質問

このコースの評価は?