4
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Djangoの概念

Last updated at Posted at 2021-03-20

はじめに

  • Djangoのチュートリアルをやってみて、説明されている概念がすんなり腑に落ちなかったので、自分の理解を元にして、Djangoのとっかかりとしてあるべき形を考えてみました。

概念図

Djangoの概念5.png

Model、Template、View、URLConf

  • 一般にURLConfは、Viewの一部とされていて、Model、Template、Viewを並べて「MTV」と呼ばれます。
    • これは、Larabelなら、Model、View、Controllerに相当します。
  • Djangoは、データベース(Model)、コンテンツ(View)、URL(URLConf)、外観(Template)を分離して抽象化し、互いに実体を隠蔽しようとします。
    • そのため、この記事では、ViewとURLConfを分けて説明しています。

アプリ (App)

  • サイトで、ひとまとまりの機能を実現する単位で、実体はPythonのモジュールです。
  • アプリ毎に、独自のモデル、テンプレート、ディスパッチャ、ビューを持つことができます。

プロジェクト

  • 複数のアプリが組み合わさって、一つのサイトを形成します。

モデル (models.py)

  • DBのテーブルをクラスとして表現した設計書です。
    • 背後のO/RマッパーがDBを隠蔽しようと尽力しています。

URLディスパッチャ (urls.py)

  • サイトのURL構成を定義し、URLを抽象化します。
    • クライアントからリクエストされたURLパターンに応じて、複数のアプリやビューに振り分けを行う機構です。
    • 生のURLを隠蔽します。
  • プロジェクトが総親でアプリが子となる階層構造を成します。
    • まず総親でアプリ別に大まかに割り振って、受け取ったアプリ内でさらに細かくビューに割り振る感じです。

ビュー (views.py)

  • リクエストに応じて、モデルからデータを取り出し、コンテンツを構成して、テンプレートに描画させる機構です。
    • Pythonでガリガリ書きます。

テンプレート (templates/*.html)

  • ビューから渡されたコンテンツを埋め込むページの外観やUIを構成します。
    • HTMLを拡張した専用マクロ言語で書かれ、レンダリングエンジンが標準HTMLを生成します。

おわりに

  • 執筆者は、Python、Djangoともに初学者ですので、誤りもあるかと思います。
    • お気づきの際は、是非コメントや編集リクエストにてご指摘ください。
    • あるいは、「それでも解らない」、「自分はこう捉えている」などといった、ご意見、ご感想も歓迎いたします。
  • 次は、チュートリアルを見直したいです。
4
7
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
4
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?