基本

Djangoアプリケーション入門|アプリ作成と処理の流れ

Django アプリケーション startapp

Djangoアプリケーション入門
アプリ作成と処理の流れ

Djangoアプリケーションの作成方法、フォルダ構成、リクエスト処理の流れを解説します。

こんな人向けの記事です

  • Djangoでアプリケーションを作成したい人
  • 各ファイルの役割を理解したい人
  • Djangoのリクエスト処理の流れを知りたい人

Step 1アプリケーションの作成

Djangoでは、プロジェクトの中に複数のアプリケーションを作成して機能を分割します。アプリケーションは以下のコマンドで作成します。

ターミナル
python manage.py startapp myapp

指定した名前のフォルダが作成され、中に初期ファイルが生成されます。

ポイント: アプリケーション名は英小文字で、Pythonのパッケージ名として有効な名前(英数字とアンダースコア)を使用してください。例: blog, user_auth, shop

Step 2settings.pyへの登録

作成したアプリケーションをsettings.pyINSTALLED_APPSに追加します。この登録を忘れると、マイグレーションやテンプレートの検索が正しく動作しません。

settings.py
INSTALLED_APPS = [
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
    "myapp",  # 追加
]

注意: INSTALLED_APPSへの登録を忘れると、makemigrationsでマイグレーションファイルが生成されない、テンプレートが見つからないなどの問題が発生します。アプリ作成後は必ず登録してください。

Step 3フォルダ構成と各ファイルの役割

作成されたアプリケーションフォルダには以下のファイルが含まれています。

フォルダ構造
myapp/
    migrations/      # マイグレーションファイルが保存されるフォルダ
    __init__.py      # Pythonパッケージ認識用
    admin.py         # 管理画面の表示設定
    apps.py          # アプリケーションの設定
    models.py        # データベースのテーブル定義
    tests.py         # テストコード
    views.py         # リクエスト処理とレスポンス返却
ファイル名説明使用頻度
models.pyデータベースのテーブル構造を定義する
views.pyリクエストを処理してレスポンスを返す
admin.py管理画面でのモデルの表示設定
urls.pyURLルーティング(手動作成)
migrations/モデルの変更履歴自動生成
apps.pyアプリケーション設定
tests.pyテストコード

Step 4urls.pyの作成

urls.pyは初期状態では存在しないため、アプリケーションフォルダ内に新規作成します。

myapp/urls.py
from django.urls import path
from . import views

app_name = "myapp"

urlpatterns = [
    path("", views.IndexView.as_view(), name="index"),
]

さらに、プロジェクトのurls.pyからアプリケーションのurls.pyを読み込む設定を追加します。

myproject/urls.py
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path("admin/", admin.site.urls),
    path("myapp/", include("myapp.urls")),
]

Step 5最初のビューを作成する

動作確認のために、シンプルなビューを作成してみましょう。

myapp/views.py
from django.views import View
from django.http import HttpResponse

class IndexView(View):
    def get(self, request):
        return HttpResponse("Hello, Django!")

開発サーバーを起動してhttp://127.0.0.1:8000/myapp/にアクセスすると、「Hello, Django!」と表示されます。

ターミナル
python manage.py runserver

Step 6Djangoの処理の流れ

Djangoがリクエストを受けてからレスポンスを返すまでの流れは以下の通りです。

順序処理説明
1リクエスト受信ブラウザからのHTTPリクエストをDjangoが受け取る
2urls.py(プロジェクト)プロジェクトのurls.pyで対応するアプリを決定する
3urls.py(アプリ)アプリのurls.pyで対応するビューを決定する
4views.pyビューがリクエストを処理し、必要に応じてmodels.pyからデータを取得する
5テンプレートHTMLテンプレートにデータを埋め込む
6レスポンス返却処理結果をHTMLとしてブラウザに返す

ポイント: URLの解決は「プロジェクトのurls.py → アプリのurls.py」の順番で行われます。include()を使ってアプリごとにurls.pyを分割することで、大規模なプロジェクトでもルーティングを整理できます。

まとめ

  • python manage.py startapp アプリ名でアプリケーションを作成する
  • 作成後は必ずsettings.pyINSTALLED_APPSに登録する
  • アプリ内にurls.pyを手動で作成し、ルーティングを定義する
  • views.pyでリクエスト処理を記述し、テンプレートやレスポンスを返す
  • Djangoの処理の流れは「リクエスト → urls.py → views.py → テンプレート → レスポンス」