カテゴリ: Django 更新日: 2026/03/27

Djangoプロジェクトのディレクトリ構造を完全解説!初心者でも迷わないフォルダの見方

Djangoプロジェクトのディレクトリ構造を理解する
Djangoプロジェクトのディレクトリ構造を理解する

先生と生徒の会話形式で理解しよう

生徒

「Djangoでプロジェクトを作ったら、フォルダやファイルがたくさん出てきて、どれが何なのか分からなくなりました……」

先生

「最初は誰でもそう感じます。Djangoのディレクトリ構造は、意味を知るととても分かりやすいですよ。」

生徒

「全部覚えないとダメですか?」

先生

「いいえ。まずは全体像と、それぞれの役割をイメージできれば十分です。」

1. Djangoプロジェクトのディレクトリ構造とは

1. Djangoプロジェクトのディレクトリ構造とは
1. Djangoプロジェクトのディレクトリ構造とは

Djangoプロジェクトのディレクトリ構造とは、Webアプリを作るために最初から用意されているフォルダとファイルの並び方のことです。Djangoでは、この構造があらかじめ決まっているため、誰が作っても同じ形からスタートできます。

プログラミング未経験の方は難しく感じるかもしれませんが、考え方はとてもシンプルです。「役割ごとに置き場所が分かれている収納棚」をイメージしてください。設定を書く場所、操作をする場所などが最初から分けられているので、後から探しやすくなっています。

例えば、プロジェクトを作成すると次のような最低限の構成が自動で作られます。


myproject/
├─ manage.py
└─ myproject/

この時点では、中身をすべて理解する必要はありません。「Djangoは、最初から整理された状態で始められる仕組みなんだ」と知っておくだけで十分です。この安心感が、初心者でも学習を続けやすい理由のひとつです。

2. プロジェクト作成直後の全体構成

2. プロジェクト作成直後の全体構成
2. プロジェクト作成直後の全体構成

Djangoでプロジェクトを作成すると、まず一番外側に「プロジェクト用フォルダ」が自動で作られます。このフォルダは、Django全体を操作するための入口のような役割を持っており、初心者の方は「まずはここから操作する」と覚えるだけで十分です。


myproject/
├─ manage.py
└─ myproject/
   ├─ __init__.py
   ├─ settings.py
   ├─ urls.py
   ├─ asgi.py
   └─ wsgi.py

外側にある manage.py は、サーバーの起動や設定確認などを行うための操作用ファイルです。一方、内側の myprojectフォルダ には、プロジェクト全体の設定情報がまとめて入っています。

たとえば、以下のように manage.py を使って開発用サーバーを起動します。プログラミング未経験の方でも、「命令を書いて実行する」といった感覚で問題ありません。


python manage.py runserver

このように、Djangoでは「外側=操作」「内側=設定」と役割がはっきり分かれています。最初はファイル名をすべて覚えなくても大丈夫なので、全体の構造と役割の違いをイメージとしてつかむことを意識しましょう。

3. manage.pyの役割を理解する

3. manage.pyの役割を理解する
3. manage.pyの役割を理解する

manage.py は、Djangoを操作するための中心的な役割を持つファイルです。Djangoで開発を進めるとき、ほぼ必ずこのファイルを通して命令を出すことになります。

具体的には、開発用サーバーの起動、アプリの作成、データベース設定の反映など、Djangoに対するさまざまな操作をまとめて受け付ける窓口のような存在です。

プログラミング未経験の方は、「Djangoを動かすための専用コマンド受付係」と考えると分かりやすいでしょう。Djangoの内部処理を直接触る必要はなく、manage.pyに命令を伝えるだけで必要な処理を自動で実行してくれます。

たとえば、次のコマンドは「Djangoの開発用サーバーを起動してください」という指示を出しています。


python manage.py runserver

このコマンドを実行すると、Djangoが準備を行い、ブラウザで動作確認できる状態になります。自分でサーバーの仕組みを理解していなくても、正しい命令を出すだけでWebアプリを動かせる点が、Djangoの大きな強みです。

なお、manage.py自体を編集することはほとんどありません。基本的には「操作するために使うファイル」として覚えておけば問題ありません。

4. プロジェクト内フォルダの正体

4. プロジェクト内フォルダの正体
4. プロジェクト内フォルダの正体

外側のフォルダと同じ名前の内側フォルダが、本当の意味での「Djangoプロジェクト本体」です。ここには、Webアプリ全体の動きを決める中枢となる設定ファイルがまとめて配置されています。

たとえば「どのURLにアクセスされたら、どう動くのか」「どのアプリを使うのか」「安全に動かすためのルール」など、サイト全体の設計図がこのフォルダに詰まっています。初心者の方は、まず“ルールブック置き場”だと考えると理解しやすいです。

代表的なファイルの一つが settings.py です。これはプロジェクト全体の設定をまとめたファイルで、後から何度も触ることになります。


# settings.py の一部(サンプル)
DEBUG = True

LANGUAGE_CODE = 'ja'

TIME_ZONE = 'Asia/Tokyo'

このように、settings.py では「開発中かどうか」「言語」「時間の基準」などを設定します。ここを書き換えるだけで、サイト全体の挙動が変わるため、この内側フォルダがプロジェクトの心臓部だと覚えておきましょう。

5. settings.pyは何をしているファイルか

5. settings.pyは何をしているファイルか
5. settings.pyは何をしているファイルか

settings.py は、Djangoプロジェクトのルールブックです。使用するアプリ、言語、時間、セキュリティ設定など、基本的な情報がすべて書かれています。

初心者のうちは、内容をすべて理解する必要はありません。「ここで全体設定をしている」という認識があれば十分です。


INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
]

6. urls.pyの役割をやさしく説明

6. urls.pyの役割をやさしく説明
6. urls.pyの役割をやさしく説明

urls.py は、Webサイトの住所と処理内容を結びつける案内板のような存在です。どのURLにアクセスされたら、どの処理を行うかを管理します。

住所録や地図のようなイメージで考えると分かりやすく、Djangoでは必ず登場する重要なファイルです。


urlpatterns = [
    path('admin/', admin.site.urls),
]

7. asgi.pyとwsgi.pyは何のためにあるか

7. asgi.pyとwsgi.pyは何のためにあるか
7. asgi.pyとwsgi.pyは何のためにあるか

asgi.pywsgi.py は、DjangoとWebサーバーをつなぐための橋渡し役です。少し難しい仕組みですが、初心者の段階では「サーバーと会話するための設定ファイル」と理解すれば問題ありません。

普段の学習では、これらのファイルを直接編集することはほとんどありません。

8. なぜこの構造を理解することが大切なのか

8. なぜこの構造を理解することが大切なのか
8. なぜこの構造を理解することが大切なのか

Djangoのディレクトリ構造を理解しておくと、「どこに何を書けばいいのか」が分かるようになります。これは、迷子にならずに開発を進めるための地図を持つようなものです。

最初は全部覚えなくても大丈夫です。フォルダやファイルの役割を少しずつ知ることで、Djangoへの苦手意識は自然と減っていきます。

まとめ

まとめ
まとめ

Djangoプロジェクトのディレクトリ構造は、初心者にとって最初は複雑に見えるかもしれませんが、全体像を押さえることで理解しやすくなります。外側フォルダは操作用や管理用の役割、内側フォルダはプロジェクト本体として設定やルールをまとめる場所です。manage.pyは操作の司令塔、settings.pyはプロジェクト全体のルールブック、urls.pyはWebサイトの住所録、asgi.pywsgi.pyはサーバーとの橋渡し役と覚えておくと混乱しません。

プロジェクト作成直後の構造を理解しておくことで、新しいアプリを追加したり、設定を変更したりするときの迷いが減ります。また、Djangoは役割ごとにフォルダが分かれているため、学習しながら少しずつ理解を深められます。初心者でもまずは「全体像をつかむこと」が大切であり、細かい設定やファイルの中身は必要に応じて学べば十分です。

例えば、プロジェクト作成直後にサーバーを起動するには、manage.pyを使います。以下のように実行するとローカルでWebサイトが動きます。


python manage.py runserver

また、settings.pyでアプリを追加する際には、INSTALLED_APPSに追記します。このように構造とファイルの役割を理解しておくと、Djangoでの開発がスムーズになります。


INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'myapp',
]

URLルーティングもurls.pyで管理されます。新しいページや機能を追加する際、どのURLでどの処理を行うかを明確にすることで、Webサイト全体の構造が整理されます。


from django.urls import path
from . import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('home/', views.home, name='home'),
]

初心者が混乱しやすいasgi.pywsgi.pyも、サーバーとDjangoをつなぐ設定ファイルとして理解しておけば十分です。普段は直接編集する必要はなく、必要なときに内容を確認する程度で問題ありません。

このようにDjangoのディレクトリ構造を理解すると、プロジェクト全体の流れや役割を把握しやすくなり、効率的に開発を進めることができます。外側と内側のフォルダの違いや、各ファイルの役割を整理して覚えることで、迷子にならずに自分のやりたい開発を進められるようになります。

先生と生徒の振り返り会話

生徒

「なるほど、Djangoは最初から整理されたフォルダとファイルがあるから迷いにくいんですね。」

先生

「その通りです。まず全体像をつかむことが大事で、細かい設定や内部処理は必要に応じて学べば十分です。」

生徒

「manage.pyやsettings.py、urls.pyの役割も分かって、次にどこを触ればよいか迷わなくなりそうです。」

先生

「そうですね。理解した構造をもとにアプリを作ったり、URLを追加したりすると、自然にDjangoの仕組みが身についていきます。」

生徒

「最初は難しく見えたけど、全体像と役割を押さえるだけで十分なんですね。」

先生

「その通り。焦らず、少しずつ理解していけばDjangoは楽しく学べます。」

カテゴリの一覧へ
新着記事
New1
Django
Djangoバリデーション入門|フォームとモデルの入力チェック基本をやさしく理解しよう
New2
Django
Djangoテンプレートの変数展開まとめ|初心者向けにわかりやすく解説
New3
Django
Django ModelFormの使い方完全ガイド!初心者でもわかる新規登録フォーム作成
New4
Django
Djangoテンプレートの使い方を完全解説!初心者でもわかるタグ・フィルタ入門
人気記事
No.1
Java&Spring記事人気No1
Python
PythonでNoSQL操作!エラーハンドリングを初心者向けに徹底解説
No.2
Java&Spring記事人気No2
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.3
Java&Spring記事人気No3
Flask
Flaskで多言語対応のログメッセージを出力する方法!Python初心者向けガイド
No.4
Java&Spring記事人気No4
Python
PythonのSQLAlchemy使い方入門!初心者でもわかるインストールと初期設定
No.5
Java&Spring記事人気No5
Python
PythonのSQLAlchemyでデータベース操作!モデルクラスでテーブル定義する方法を徹底解説
No.6
Java&Spring記事人気No6
Flask
FlaskでJSONレスポンスを多言語化!API設計の基本を初心者向けに解説
No.7
Java&Spring記事人気No7
Python
PythonでCassandraに接続する方法を完全ガイド!cassandra-driverの使い方
No.8
Java&Spring記事人気No8
Python
PythonでREST APIを作る方法!初心者向けFastAPI入門