Djangoの全体像
Djangoの構成要素(コンポーネント)は主に次のようなものがある。
- ルーティング(Rooting)
- ビュー(View)
- フォーム(Form)
- モデル(Model)
- テンプレート(Template)
一般的にMVTモデルと呼ばれる
全体の処理の流れ
1. ユーザーからのリクエストに含まれるURLから処理を任せるアプリケーションを識別して、処理を渡す。
2. URLから処理すべきViewを識別して、処理を渡す。
3. Formのコンポーネントを利用している場合にFormに処理を渡す。
4. FormオブジェクトをViewに返す。
5. DBとの連携が必要であればModelに処理を渡す。
6. DBに対してSQLを発行。
7. DBに対する処理結果をModelに返す。
8. DBの処理結果をViewに返す
9. HTML生成をTemplateに命令し、その際、フォームオブジェクトあるいはDBから取得した結果があれば渡す。
10. 生成したHTMLをViewに返す。
11. HTMLをレスポンスとしてユーザーに返す。
Djangoプロジェクトのファイル構成
project: プロジェクト全体をまとめるディレクトリ
- application: アプリケーション関連ファイルをまとめるディレクトリ
- migrations: migrationファイルを格納するディレクトリ
- templates: Templateファイルを格納するディレクトリ
- index.html: Templateファイル
- __ init __.py: Pythonのパッケージを示すファイル(空で良い)
- admin.py: 管理サイトの設定ファイル
- apps.py: アプリケーション構成設定ファイル
- forms.py: Form定義ファイル
- models.py: Model定義ファイル
- tests.py: テストコード記述ファイル
- urls.py: アプリケーション用ルーティング定義ファイル
- views.py: View定義ファイル
- project: プロジェクト全体に関わるファイルをまとめるディレクトリ
- __ init__.py:
- asgi.py: デプロイ用ファイル
- settings.py: プロジェクト設定ファイル
- urls.py: プロジェクト用ルーティング定義ファイル
- wsgi.py: デプロイ用ファイル
- manage.py: コマンド実行用ファイル
各コンポーネントの役割
Rooting: URLからどのアプリケーションまたはビューに処理を渡すかを識別する。
View: 司令塔の役割を果たし、ModelにDB操作を指示したり、Templateに表示用データを渡してHTML生成を指示したりする。
Form: フォーム画面で入力されたユーザー入力値をフォームオブジェクトに変換して、DBに保管する。また、入力値のValidationも行う。
Model: DBとの連携を受け持つ。Viewから指示を受けると、その裏でSQLを発行し、DBの更新や検索結果をViewに返したりする。
Template: Viewから指示を受けると、HTMLの雛形にViewから受け取るDBの処理結果などを埋め込んで、HTMLを作成してViewに返す。