「Django使い始めたけど、MTVってなに?ぜんぜん分からない...」
MTVってそれぞれの役割を分かりやすく3つにした考えかたなんだよね。

知って使えるようになると、分かりやすくて修正しやすいWEBアプリが作れる
さて、じゃあMTVの考えかたを話していこうか。

DjangoのMTVモデルっていったいなんなの?

  • Model(モデル)【データをどのように保管するかの役割】
  • Template(テンプレート)【Web上の見た目をつくる役割】
  • View(ビュー)【情報を処理してどのような情報を見せるかの部分】

それぞれの頭文字をとって、MTV

さて、大まかに分かったところで、これから下記で説明していこうか。

Model--データをどのように保管するかの役割

Modelの役割は、データベース(データをどのように保管するか)の役割。
データベースの知識がそんなに無くても、簡単に作れて、編集、削除も可能

たとえば会員登録させたいときや、アンケートをとってその回答を保存しておきたいときに使える。

「Modelについてもっと知っておきたい」って思ったら【入門】Django/models.pyの理解しやすい使いかた【Windows】をチェック。

DjangoのModelコードサンプル
class User(models.Model):
    username = models.CharField(max_length=20, default='ziyuss')
  • Userという名前(テーブル名)
  • usernameという名前(フィールド名)
  • 型式はChar型(1文字以上を入れられる型)
  • 文字の長さは20文字まで
  • デフォルトの文字はziyuss

という色々オプションも付けたデータベースができるんだよ。

Template--Web上の見た目をつくる役割

Templateなんけど、Web上の見た目部分をつくって表示させる役割。

次に紹介するViewという役割のところから処理されたデータをもってきて表示させる。
まあ、使うのは半分くらいHTML・CSSになるけど(笑)

IF文やFor文なんかも使うことができて、たとえば名前の一覧を表示させたい場合。

下記のように、コードを書けばあとは勝手に表示してくれる。

{% For name in names %}
  <p>{{ name }}</p>
{% endfor %}

実は、Jinjaっていうテンプレートを使ってるんだよね。

そう、その神社(笑)

テンプレートの一覧は英語になっちゃうけどTemplate Designer Documentation — Jinja Documentation (2.11.x)で紹介されてるから見てみて。

View--情報を処理してどのような情報を見せるかの役割

情報を受け取って、情報を処理にそってどう見せるか判断する役割だね。
Modelから受け取ったデータをTemplateに表示させるつなぎ役。

『Model→Template』じゃデータが表示できない。
『Model→View→Template』この順番じゃないと表示がされないんだ。

他にもURLとつなげる役目だったり、意外と重要な役割してるのがこのView。

 Viewを理解すると、DjangoでWEBアプリを作るのがスムーズに

「ちょっとViewに興味でてきた」って思ったら【入門】Django/views.pyの理解しやすい使いかた【Windows】でくわしく解説してるから見てみて。

まとめ: 3つが理解できればWEBアプリ作成が楽しくなる

  • Model(モデル)【データをどのように保管するかの役割】
  • Template(テンプレート)【Web上の見た目をつくる役割】
  • View(ビュー)【情報を処理してどのような情報を見せるかの部分】

上記のModel・Template・View3つがそろってDjangoは成り立ってる。

ちゃんと使えるようになれば、何倍もWEBアプリを作るのが楽しくなるから何回も読み返して使えるようにしていこう。

ちょっと理解できたなって思ったらforms.py値を取得→保存するDjangoWebアプリ【チュートリアル】で実際にアプリを作ってみると面白いよ。

人気記事【必読】"見やすく修正しやすいコード"につながる本『リーダブルコード』