【 django 入門】 ディレクトリ構造 の基礎を学ぶと理解が進む

DjangoはMVCフレームワークを採用しており、プロジェクトとアプリケーションの ディレクトリ構造 には一定のルールがあります。プロジェクトとアプリはそれぞれ独自の役割を持っており、アプリケーションに共通する機能を提供するプロジェクトと、プロジェクト内の機能を提供するアプリケーションの2つの要素から構成されています。

プロジェクトとアプリケーションの関係について

プロジェクトはアプリケーションを統括し、設定ファイルや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.pywsgi.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__.pysettingsの初期化ファイル。
    • 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ディレクトリが含まれています。

以上のようなディレクトリ構造を採用することで、複数の開発者が同じプロジェクトに参加したとしても、全員が共通のファイル構造に従うことができるため、プロジェクトの開発やメンテナンスがスムーズに行えるようになります。

Udemy 独学でのアプリ開発に限界を感じたら

プログラミング初学者の皆さんに、 Udemy を強くお勧めしたいと思います。 Udemy は世界中のトップレベルのプログラミング講師が提供するオンライン講座を取り揃えています。以下は、 Udemy で学ぶことのメリットについての詳細です。

1. Udemy の豊富なコースの選択肢

Udemyには、数千ものコースがあります。初心者から上級者まで、プログラミングのあらゆるレベルを網羅しています。また、様々なプログラミング言語やツールに関するコースも多数あり、希望に合わせたコースを選ぶことができます。

2. 実践的な学習方法

Udemyのコースは、理論だけでなく実践的な学習も行えます。多くのコースには、プログラムの作成や実際のプロジェクトに取り組む演習が含まれています。これにより、理論だけでなく実践的なスキルも身につけることができます。

3. Udemy には質の高い講師陣

Udemyの講師陣には、世界中のトップレベルのプログラマーが多数在籍しています。彼らは、実務での経験を活かして、分かりやすい講義を行っています。

4. 初学者が始めるのにとても手頃な価格

Udemyのコースは、他のオンライン講座と比べて手頃な価格で提供されています。また、一度購入すると、終身アクセスが得られるので、自分のペースで学習することができます。

以上の理由から、プログラミング初学者の方には、Udemyが最適な学習プラットフォームであると考えられます。ぜひ一度、Udemyのコースを体験してみてください。


ウェブ開発の人気オンラインコース


ITとソフトウェアの人気オンラインコース


デザインの人気オンラインコース