0
0

Djangoの裏側ではなにがおこっているのか?

Posted at

インフォメーション
本記事は独自で勉強した内容のアウトプットになります。

どうも初めましてエンジニアを目指して勉強中のsteveです。
Djangoを勉強して約二か月経過したので、ここでは,Djangoの概説を説明したいと思います。

はじめに -WebサイトとWebアプリの違いとは?-

簡潔にまとめると、responseするHTMLが動的ならwebアプリ、静的ならwebサイトになります
したがって、ユーザーによって動的に異なったwebページを返せるdjangoは、webアプリになります。

webアプリの処理手順

キーワードは、webサーバー,APサーバー、データベースになります。

Webサーバー・・・クライアントから受け取るリクエストの窓口
APサーバー・・・必要に応じてデータベースと連携をとりレスポンスデーターを作成
データベース・・・データを保管しているサーバー

  • 処理1 ブラウザからwebアプリにリクエストを送る
  • 処理2 WEBサーバーが窓口としてリクエストを受け取り、レスポンスに必要なのが、静的コンテンツなのか、動的コンテンツなのか判断
    • 静的コンテンツであれば、処理4へ
    • 動的コンテンツであれば、処理3へ
  • 処理3 APサーバーで処理
    • データベースからのデータの取得が必要であれば、データベースと連携し、レスポンスデータを作り、WEBサーバにデータを返す。
  • 処理4 WEBサーバーからレスポンスデータをブラウザに返す

Djangoでは、処理2、処理3をどのように走らせるかを設定するというわけです。

Djangoはどのように処理2、処理3を実行するのか

キーワードは、次の3個です

Model・・・データベースと連携をとるコンポーネント
Template・・・一般にhtmlファイルのことをさします
View・・・modelから参照したデータをどのように扱うか
(上記3つがメインのコンポーネントになるため、頭文字をとってMTVモデルと呼んだりします)

基本的に上記の3つを駆使して、リクエスト情報をさばいていくことになります。

この他にも処理1の部分は、urls.pyが担っているのですが、
djangoをwebアプリたらしめているための要素になってるのがMTVになります。

まず、処理1のリクエストがurls.pyで設定したアプリケーションに届く。
リクエストをurls.pyで指定したアプリケーションが処理する。
アプリケーションがレスポンスデータを返す。

では、アプリケーションはどのような処理をしてレスポンスデータを作成しているのでしょうか?? 以下からが本記事のメインテーマになります。

Djangoの裏側では、何がおこっているのか?

まず、リクエスト情報を受け取り最初に働くコンポーネントがviewになります。

viewは主に、「このリクエストがきたら、どのようにデータベースのデータを扱い、どのようにHTMLと絡みつけて、レスポンスデータを作成するのか」を設定する部分になります。
したがって、viewの設定により、どのデータベース(model)を扱うのか、どのhtml(template)を扱うのか を決めることができるので、viewはDjangoにおける脳のような役目をしているといえます。

modelは、データベースのテーブル作成をクラスベースの記述で設定できるコンポーネントになります。

templateは、htmlをどのように動的に表示するのか設定できるコンポーネントになります。具体的には、「もし、ユーザーがログイン状態なら、このデータを表示する」といった内容を、pythonの記述方法に近い方法で記述できます。

つまりまとめると、

viewがリクエストを受け取り、必要に応じてレコードをデータベースから取得し、表示するHTMLをtemplateから受け取る。レコードとhtmlの材料をもとに、viewが処理をしてレスポンスデータができあがる。

→処理4へ

これが全体的な動きになります!

0
0
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
0
0