DjangoはMVCフレームワークを採用しており、プロジェクトとアプリケーションの ディレクトリ構造 には一定のルールがあります。プロジェクトとアプリはそれぞれ独自の役割を持っており、アプリケーションに共通する機能を提供するプロジェクトと、プロジェクト内の機能を提供するアプリケーションの2つの要素から構成されています。
Contents
プロジェクトとアプリケーションの関係について
プロジェクトはアプリケーションを統括し、設定ファイルやURLのルーティングなど、アプリケーションに共通する機能を提供します。一方、アプリケーションは、プロジェクト内の機能を提供するためのものであり、モデル、ビュー、テンプレートなどの機能を包括しています。アプリケーションは、プロジェクト内で複数作成することができます。また、アプリケーションは別のプロジェクトに組み込むことも可能です。
プロジェクトの作成には、django-admin startproject {プロジェクト名}
コマンドを実行します。このコマンドを実行すると、プロジェクト名と同名のディレクトリが作成され、その中にプロジェクトの設定ファイルやアプリケーションのURLを定義するファイルが含まれます。また、管理者権限でプロジェクトを管理するための manage.py
ファイルも含まれます。
一方、アプリケーションの作成には、python manage.py startapp {アプリ名}
コマンドを実行します。このコマンドを実行すると、アプリ名と同名のディレクトリが作成され、このディレクトリには、このアプリケーションで使用するモデル、ビュー、テンプレートなどが含まれます。また、データベースのマイグレーションファイルを保存するためのmigrations
ディレクトリも含まれます。
プロジェクトはアプリケーションを管理し、アプリケーションに共通する機能を提供します。プロジェクトのディレクトリ内には、アプリケーションのURLを定義するurls.py
、プロジェクトの設定を定義するsettings.py
、アプリケーションの起動を行うwsgi.py
、Websocket通信を行うためのasgi.py
などのファイルが含まれます。
一方、アプリケーションは、プロジェクト内で機能を提供するもので、モデル、ビュー、テンプレートなどの機能を包括しています。アプリケーションのディレクトリ内には、アプリケーションの設定を定義するapps.py
、管理サイトでのモデルの表示設定を定義するadmin.py
、テスト用ファイルを定義するtests.py
、データベースのマイグレーションファイルを保存するmigrations
ディレクトリが含まれています。
プロジェクトとアプリの関係性については、プロジェクトがアプリケーションを統括し、アプリケーションがプロジェクト内の機能を提供するということが言えます。アプリケーションは、複数のプロジェクトにまたがって利用でき、プロジェクトには複数のアプリケーションを含めることが可能です。
プロジェクトの ディレクトリ構造 (デフォルト)
Djangoのプロジェクトを作成するには、django-admin startproject {プロジェクト名}
コマンドを実行します。このコマンドを実行すると、以下のようなディレクトリ構造が作成されます。
{プロジェクト名}/
manage.py
{プロジェクト名}/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py
プロジェクトを作成すると、プロジェクト名と同名のディレクトリが作成され、その中にプロジェクトの設定ファイルやアプリケーションのURLを定義するファイルが含まれます。また、管理者権限でプロジェクトを管理するための manage.py
ファイルも含まれます。
manage.py
:Djangoのコマンドラインツール。プロジェクトの管理に使用します。settings.py
:プロジェクトの設定ファイル。データベースやメディアファイルの保存場所などを定義します。urls.py
:プロジェクトのルーティングを定義します。asgi.py
・wsgi.py
:Webサーバーとの接続に使用されます。
アプリケーションの ディレクトリ構造 (デフォルト)
Djangoのアプリケーションを作成するには、python manage.py startapp {アプリ名}
コマンドを実行します。このコマンドを実行すると、以下のようなディレクトリ構造が作成されます。
{アプリ名}/
__init__.py
admin.py
apps.py
models.py
tests.py
views.py
migrations/
__init__.py
アプリケーションを作成すると、アプリ名と同名のディレクトリが作成されます。このディレクトリには、このアプリケーションで使用するモデルやビュー、テンプレートなどが含まれます。また、データベースのマイグレーションファイルが保存される migrations
ディレクトリも含まれます。
admin.py
:管理サイトでのモデルの表示設定を定義します。apps.py
:アプリケーションの設定を定義します。models.py
:アプリケーションで使用するモデルを定義します。tests.py
:アプリケーションのテスト用ファイルを定義します。views.py
:アプリケーションのビューを定義します。migrations/
:データベースのマイグレーションファイルが保存されるディレクトリです。
Django ディレクトリ構成 の ベストプラクティス とは
Djangoのプロジェクトは、アプリケーションを統括し、設定ファイルやURLのルーティングなど、アプリケーションに共通する機能を提供するプロジェクトと、プロジェクト内の機能を提供するアプリケーションの2つの要素から構成されています。プロジェクトはアプリケーションを管理し、アプリケーションに共通する機能を提供します。一方、アプリケーションは、プロジェクト内の機能を提供するためのものであり、モデル、ビュー、テンプレートなどの機能を包括しています。アプリケーションは、プロジェクト内で複数作成することができます。また、アプリケーションは別のプロジェクトに組み込むことも可能です。
Djangoのディレクトリ構成については、プロジェクトごとに異なる構成が許容されていますが、ベストプラクティスとして以下のようなディレクトリ構造が推奨されています。
project_root/
manage.py
project/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py
app/
__init__.py
admin.py
apps.py
models.py
tests.py
views.py
templates/
static/
migrations/
.env
.gitignore
README.md
requirements.txt
project_root/
は、プロジェクトのルートディレクトリです。以下のファイル・ディレクトリが配置されます。
.env
:環境変数を設定するファイル。.gitignore
:Gitで管理しないファイルを指定するファイル。README.md
:プロジェクトの説明を記述するためのファイル。requirements.txt
:アプリケーションの依存ライブラリを定義するためのファイル。app/
:アプリケーションごとのディレクトリ。project/
:プロジェクトごとのディレクトリ。manage.py
:Djangoのコマンドラインツール。
app/
は、アプリケーションごとのディレクトリです。以下のファイル・ディレクトリが配置されます。
__init__.py
:アプリケーションの初期化ファイル。admin.py
:管理サイトでのモデルの表示設定を定義するファイル。apps.py
:アプリケーションの設定を定義するファイル。models.py
:アプリケーションで使用するモデルを定義するファイル。tests.py
:アプリケーションのテスト用ファイルを定義するファイル。views.py
:アプリケーションのビューを定義するファイル。templates/
:アプリケーションのテンプレートファイルを配置するディレクトリ。static/
:アプリケーションの静的ファイルを配置するディレクトリ。migrations/
:データベースのマイグレーションファイルが保存されるディレクトリ。
project/
は、プロジェクトごとのディレクトリです。以下のファイル・ディレクトリが配置されます。
__init__.py
:プロジェクトの初期化ファイル。settings/
:プロジェクトの設定ファイルが保存されるディレクトリ。__init__.py
:settings
の初期化ファイル。base.py
:共通設定を定義するファイル。local.py
:ローカル開発用の設定を定義するファイル。production.py
:本番環境用の設定を定義するファイル。
urls.py
:プロジェクトのURLを定義するファイル。wsgi.py
:Webサーバーとの接続に使用されるファイル。
manage.py
は、Djangoのコマンドラインツールであり、プロジェクトの管理に使用されます。
プロジェクトのディレクトリ内には、アプリケーションのURLを定義するurls.py
、プロジェクトの設定を定義するsettings.py
、アプリケーションの起動を行うwsgi.py
、Websocket通信を行うためのasgi.py
などのファイルが含まれます。一方、アプリケーションのディレクトリ内には、アプリケーションの設定を定義するapps.py
、管理サイトでのモデルの表示設定を定義するadmin.py
、テスト用ファイルを定義するtests.py
、データベースのマイグレーションファイルを保存するmigrations
ディレクトリが含まれています。
以上のようなディレクトリ構造を採用することで、複数の開発者が同じプロジェクトに参加したとしても、全員が共通のファイル構造に従うことができるため、プロジェクトの開発やメンテナンスがスムーズに行えるようになります。