Djangoプロジェクトのディレクトリ構造を完全解説!初心者でも迷わないフォルダの見方
生徒
「Djangoでプロジェクトを作ったら、フォルダやファイルがたくさん出てきて、どれが何なのか分からなくなりました……」
先生
「最初は誰でもそう感じます。Djangoのディレクトリ構造は、意味を知るととても分かりやすいですよ。」
生徒
「全部覚えないとダメですか?」
先生
「いいえ。まずは全体像と、それぞれの役割をイメージできれば十分です。」
1. Djangoプロジェクトのディレクトリ構造とは
Djangoプロジェクトのディレクトリ構造とは、Webアプリを作るために最初から用意されているフォルダとファイルの並び方のことです。Djangoでは、この構造があらかじめ決まっているため、誰が作っても同じ形からスタートできます。
プログラミング未経験の方は難しく感じるかもしれませんが、考え方はとてもシンプルです。「役割ごとに置き場所が分かれている収納棚」をイメージしてください。設定を書く場所、操作をする場所などが最初から分けられているので、後から探しやすくなっています。
例えば、プロジェクトを作成すると次のような最低限の構成が自動で作られます。
myproject/
├─ manage.py
└─ myproject/
この時点では、中身をすべて理解する必要はありません。「Djangoは、最初から整理された状態で始められる仕組みなんだ」と知っておくだけで十分です。この安心感が、初心者でも学習を続けやすい理由のひとつです。
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の役割を理解する
manage.py は、Djangoを操作するための中心的な役割を持つファイルです。Djangoで開発を進めるとき、ほぼ必ずこのファイルを通して命令を出すことになります。
具体的には、開発用サーバーの起動、アプリの作成、データベース設定の反映など、Djangoに対するさまざまな操作をまとめて受け付ける窓口のような存在です。
プログラミング未経験の方は、「Djangoを動かすための専用コマンド受付係」と考えると分かりやすいでしょう。Djangoの内部処理を直接触る必要はなく、manage.pyに命令を伝えるだけで必要な処理を自動で実行してくれます。
たとえば、次のコマンドは「Djangoの開発用サーバーを起動してください」という指示を出しています。
python manage.py runserver
このコマンドを実行すると、Djangoが準備を行い、ブラウザで動作確認できる状態になります。自分でサーバーの仕組みを理解していなくても、正しい命令を出すだけでWebアプリを動かせる点が、Djangoの大きな強みです。
なお、manage.py自体を編集することはほとんどありません。基本的には「操作するために使うファイル」として覚えておけば問題ありません。
4. プロジェクト内フォルダの正体
外側のフォルダと同じ名前の内側フォルダが、本当の意味での「Djangoプロジェクト本体」です。ここには、Webアプリ全体の動きを決める中枢となる設定ファイルがまとめて配置されています。
たとえば「どのURLにアクセスされたら、どう動くのか」「どのアプリを使うのか」「安全に動かすためのルール」など、サイト全体の設計図がこのフォルダに詰まっています。初心者の方は、まず“ルールブック置き場”だと考えると理解しやすいです。
代表的なファイルの一つが settings.py です。これはプロジェクト全体の設定をまとめたファイルで、後から何度も触ることになります。
# settings.py の一部(サンプル)
DEBUG = True
LANGUAGE_CODE = 'ja'
TIME_ZONE = 'Asia/Tokyo'
このように、settings.py では「開発中かどうか」「言語」「時間の基準」などを設定します。ここを書き換えるだけで、サイト全体の挙動が変わるため、この内側フォルダがプロジェクトの心臓部だと覚えておきましょう。
5. settings.pyは何をしているファイルか
settings.py は、Djangoプロジェクトのルールブックです。使用するアプリ、言語、時間、セキュリティ設定など、基本的な情報がすべて書かれています。
初心者のうちは、内容をすべて理解する必要はありません。「ここで全体設定をしている」という認識があれば十分です。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
]
6. urls.pyの役割をやさしく説明
urls.py は、Webサイトの住所と処理内容を結びつける案内板のような存在です。どのURLにアクセスされたら、どの処理を行うかを管理します。
住所録や地図のようなイメージで考えると分かりやすく、Djangoでは必ず登場する重要なファイルです。
urlpatterns = [
path('admin/', admin.site.urls),
]
7. asgi.pyとwsgi.pyは何のためにあるか
asgi.py と wsgi.py は、DjangoとWebサーバーをつなぐための橋渡し役です。少し難しい仕組みですが、初心者の段階では「サーバーと会話するための設定ファイル」と理解すれば問題ありません。
普段の学習では、これらのファイルを直接編集することはほとんどありません。
8. なぜこの構造を理解することが大切なのか
Djangoのディレクトリ構造を理解しておくと、「どこに何を書けばいいのか」が分かるようになります。これは、迷子にならずに開発を進めるための地図を持つようなものです。
最初は全部覚えなくても大丈夫です。フォルダやファイルの役割を少しずつ知ることで、Djangoへの苦手意識は自然と減っていきます。
まとめ
Djangoプロジェクトのディレクトリ構造は、初心者にとって最初は複雑に見えるかもしれませんが、全体像を押さえることで理解しやすくなります。外側フォルダは操作用や管理用の役割、内側フォルダはプロジェクト本体として設定やルールをまとめる場所です。manage.pyは操作の司令塔、settings.pyはプロジェクト全体のルールブック、urls.pyはWebサイトの住所録、asgi.pyとwsgi.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.pyとwsgi.pyも、サーバーとDjangoをつなぐ設定ファイルとして理解しておけば十分です。普段は直接編集する必要はなく、必要なときに内容を確認する程度で問題ありません。
このようにDjangoのディレクトリ構造を理解すると、プロジェクト全体の流れや役割を把握しやすくなり、効率的に開発を進めることができます。外側と内側のフォルダの違いや、各ファイルの役割を整理して覚えることで、迷子にならずに自分のやりたい開発を進められるようになります。
生徒
「なるほど、Djangoは最初から整理されたフォルダとファイルがあるから迷いにくいんですね。」
先生
「その通りです。まず全体像をつかむことが大事で、細かい設定や内部処理は必要に応じて学べば十分です。」
生徒
「manage.pyやsettings.py、urls.pyの役割も分かって、次にどこを触ればよいか迷わなくなりそうです。」
先生
「そうですね。理解した構造をもとにアプリを作ったり、URLを追加したりすると、自然にDjangoの仕組みが身についていきます。」
生徒
「最初は難しく見えたけど、全体像と役割を押さえるだけで十分なんですね。」
先生
「その通り。焦らず、少しずつ理解していけばDjangoは楽しく学べます。」