Re:ゼロから始める文系プログラマ

未経験がプログラミングを通して人生を変える

【Django】②Djangoでアプリができる仕組みを知る


スポンサードリンク
 

f:id:ShotaNukumizu_1000:20210924094721p:plain

おはようございます。Shotaです。

今日の記事では、PythonのWebフレームワーク「Django」でアプリケーションができる仕組みについて徹底解説していきます。

前回の記事(以下参照)を参考に、今回はDjangoでWebアプリケーションが動く仕組みを徹底解説します。

shotanukumizu-1000.hatenablog.com

それでは早速、本題に入りましょう。



Djangoの全体像

shotanukumizu-1000.hatenablog.com

こちらの過去記事でも紹介しましたが、DjangoPythonのWebフレームワークです。Djangoには、多くのWebアプリで必要なメール送信やセキュリティなどの多くの機能がデフォルトで備わっています。

Djangoはユーザからのリクエストをどの処理に振り分けるのか判断する「ルーティング」やデータベースとの連携を受け持つ「モデル」などのコンポーネントが独立して各役割を持ち、コンポーネント同士が相互に連携しあって動きます。

下記の画像はDjangoコンポーネントがどのように連携しているのかを表示しています。

f:id:ShotaNukumizu_1000:20211019052907j:plain

①リクエストに含まれるURL空処理をまかせるアプリケーションを識別し、処理を渡す

②URLから処理するべきViewを識別し、処理を渡す

③フォームコンポーネントを利用している場合に処理を渡す

④フォームオブジェクトをViewに渡す

⑤データベースとの連携が必要であればモデルに処理を渡す

⑥データベースに対してSQL(データベース言語)を発行する

⑦データベースに対する処理結果を返す

⑧データベースの処理結果を返す

⑨HTMLの生成を命令する。その際、フォームオブジェクトまたはデータベースから取得した結果があれば渡す

⑩生成したHTMLを返す

⑪HTMLをレスポンスとして返す


Djangoの各コンポーネントの役割


ルーティング(routing)

URLからどのアプリケーションまたはViewに処理を渡すかを識別します。


ビュー(view)

司令塔の役割を果たします。モデルにデータベース操作を指示したり、でんプレートに表示用データを渡してHTML生成を指示したりします。


フォーム(form)

フォーム画面で入力されたユーザ入力値をフォームオブジェクトに変換して、Django内部で保持します。また入力値のバリデーション(validation)も行います。


モデル(model)

データベースとの連携を受け持ちます。viewから指示を受け取ると、その裏でSQLを発行しデータベースの更新や検索結果をviewに返したりします。


テンプレート(template)

viewから指示を受けるとHTMLの雛形にviewから受け取るデータベースの処理結果などを埋め込みHTMLを作成してviewに返します。


Djangoアプリの設計


プロジェクトとアプリケーション

Djangoは、1つのWebアプリを1つのプロジェクトで管理します。また、プロジェクトはプロジェクト全体に関わる設定を記述したファイル群と機能単位にまとまったアプリケーションで構成されています。機能は、ユーザ管理機能が一つの例としてあげられます。

Djangoのプロジェクトとアプリケーションはゼロから作るわけではありません。プロジェクトとアプリケーションそれぞれにコマンドが用意されていて、それらを実行すると自動でひな形を作成してくれます。


Djangoプロジェクトの作成

以下のコマンドを入力します。

django-admin startproject <プロジェクト名>

このコマンドを入力すると、ディレクトリ(ファイルやフォルダを管理する体系)は以下のようになります。

f:id:ShotaNukumizu_1000:20211019054028j:plain

あと、上記のコマンドでプロジェクト名の後に.を入力すると、以下のようになります。

▼コマンド

django-admin startproject <プロジェクト名> .

▼実行結果

f:id:ShotaNukumizu_1000:20211019054416j:plain


Djangoアプリケーションの作成

次のコマンドでDjangoのアプリケーションを作成します。

django-admin startapp <アプリケーション名>

▼実行結果

f:id:ShotaNukumizu_1000:20211019055713j:plain
appコマンド実行時


Djangoプロジェクトのファイル構成

Djangoのプログラムファイルは大きく分けるとプロジェクト全体に関係するディレクトリとアプリケーションごとのディレクトリに分けられます。


プロジェクト


manage.py

Djangoのコマンドを実行するときのファイルです。


project/_init_.py

Pythonのパッケージを示すファイルです。


project/settings.py

Djangoプロジェクトの設定ファイルです。


project/urls.py

DjangoプロジェクトのURL宣言、言い換えればDjangoアプリにおける「目次」を意味します。


project/asgi.py

デプロイ用ファイルです。


project/wsgi.py

project/asgi.pyと同様に、デプロイ用ファイルです。


アプリケーション


app/migrations

マイグレーションファイルを格納するディレクトリです。


app/_init_.py

Pythonのパッケージを示すファイルです。


app/admin.py

管理サイトの設定ファイルです。


apps.py

アプリケーションを構成するための設定を記述するファイルです。


app/models.py

Djangoのモデルを定義する時に使うファイルです。


app/tests.py

テストコードを記述するファイルです。


app/views.py

DjangoのViewを定義するファイルです。


まとめ

今回はDjangoでアプリができる仕組みを解説しました。

今回の記事を参考に、Djangoに対する理解を深めていただけると幸いです。

今回の記事はこれで終了です。

【参考】

codor.co.jp