6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Django MVTとはなんなのかを最もプリミティブに要してみた

Last updated at Posted at 2025-01-26

3歩歩けば忘れてしまうアホな自分自身のために最もプリミティブにまとめてみた。
前提:REST APIやフロントフレームワークは使用しない。


MVTとはなにか?

DjangoのMVTは、Model-View-Templateの略で、以下のような役割分担を持つアーキテクチャです。語弊を恐れず要してみようと思います。

  • Model

データベースとのやり取りを担当。データ構造やビジネスロジックを定義します。
また、ここで記述された内容を元にmigrationファイルを作成し、データベースのテーブルを作成します。
「ORM(Object-Relational Mapping: ModelとDBの連携を簡単にしてくれるすごいやつ)」により、SQLを直接書かなくてもデータベース操作を簡単に実行できます。

要するに

データベースとやり取りするためのルールや構造(型)がここに書いてあるよ!
しかもSQL知らなくても解決してくれるよ!すごい!

  • View

ユーザーリクエストに応じて、必要なデータをModelから取得し、テンプレートに渡します。
取得したデータの処理など、システムのコア部分のロジックはここに記述されます。

要するに

リクエストを受け取った後のふるまい(データの取得・処理・渡し方)が記述されているよ!

  • Template

ページ描画を担当。Viewから渡されたデータをHTMLとして整形し、クライアント(ブラウザ)に返します。
基本的な設計として、base.htmlというファイルを作成し、そこにベースとなるHTMLを記述します。
その中(HTML)に、データを表示するためのブロック(可変部分)を記述し、各ページが担う情報を提供し、バックエンドから受け取るデータを埋め込むことができます。

要するに

画面に表示されるもの(HTML)がここに記述されているよ!

「OK、完全理解」の図

スクリーンショット 2025-01-27 4.42.30.png


データ送信と結果の出力方式

データ送受信の流れ

  1. ブラウザはHTTPリクエストをサーバーに送信します(GETやPOSTなどのメソッド)。
  2. Djangoは、リクエストをurls.pyで特定のViewにルーティング。
  3. Viewがリクエストデータを処理し、必要に応じてModelからデータを取得・処理。
  4. 最後に、Viewがテンプレートエンジンを使いHTMLを生成し、クライアントにレスポンスを返します。

最もプリミティブな図解
スクリーンショット 2025-01-27 3.56.57.png

この方式はサーバーサイドテンプレートレンダリング(もしくはDjango固有のMVTアーキテクチャ)と呼ばれ、
広義には、SSR(Server-Side Rendering:サーバーサイドでHTMLを生成する仕組み) と表現することも。


API通信とMVTの活用場面の比較

MVT

サーバーサイドレンダリング(SSR) の伝統的な手法で、 多ページアプリケーション(MPA) でよく使われます。フロントエンドに複雑な処理が必要なく、サーバー側で全てのHTMLを生成して効率的に提供できる。
SEOが重要な静的・動的サイトと相性が良い。

API通信

フロントエンドが進化した現在では、REST APIやGraphQLを使ったクライアントサイドレンダリング(CSR) が主流。
特に シングルページアプリケーション(SPA) やモバイルアプリとの連携を考える場合には、API通信がスタンダードとなる。この場合バックエンドからのレスポンスとしてJSONやXMLなどのデータを受け取りフロントで処理・表示する。

まとめ

MVTはHTMLに組み込んでから渡す。
APIはデータだけ渡してフロントで処理する。

方式 レンダリング方式 主なユースケース
MTV SSR
サーバーサイドレンダリング
ページアプリケーション
Maluti-Page Application
API通信 CSR
クライアントサイドレンダリング
シングルページアプリケーション
Single-Page Application

API通信は現在のWeb開発で広く使われており、デファクトスタンダード(事実上の標準、みんながとりあえず使うやつ)といえるが、シンプルなウェブサイトやSEOが重要なケースでは、MVTも十分に活躍できる方式。


6
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?