アプリケーションとは
アプリケーションの役割
Djangoでは、Webアプリケーションは複数の「アプリケーション」から構成されます。アプリケーションとは、特定の機能を提供する独立したモジュールです。
プロジェクトとアプリケーションの違い
- プロジェクト: 複数のアプリケーションを管理する全体の構成。
- アプリケーション: プロジェクト内で特定の機能を実装するための単位。
例:ブログのプロジェクトには、記事管理のアプリケーション、ユーザー管理のアプリケーションなどがあります。
アプリケーションの作成
アプリケーション作成コマンド
- プロジェクトのルートディレクトリに移動します。
- 以下のコマンドを実行してアプリケーションを作成します:
python manage.py startapp myapp
- 正常に作成されると、
myapp
というフォルダが生成されます。
フォルダ構成の確認
作成されたアプリケーションは次のような構造になります:
myapp/
__init__.py
admin.py
apps.py
models.py
tests.py
views.py
migrations/
各ファイルの役割
init.py
- このファイルによって
myapp
ディレクトリがPythonパッケージとして認識されます。
admin.py
- Djangoの管理画面でモデルを表示するための設定を行うファイルです。
- 例:ブログ記事を管理画面から操作する際の設定を記述します。
apps.py
- アプリケーション設定を管理するファイルです。
- 通常はデフォルトの設定のままで問題ありませんが、カスタム設定が必要な場合に編集します。
models.py
- データベースのテーブルを定義するファイルです。
- データを保存するためにモデルをここに記述し、Djangoが自動的にデータベースに反映します。
- 例:
from django.db import models class BlogPost(models.Model): title = models.CharField(max_length=100) content = models.TextField() created_at = models.DateTimeField(auto_now_add=True)
views.py
- リクエストを受け取り、レスポンスを返すロジックを記述します。
- 例:ブログ記事のリストを表示するビューを定義する。
from django.http import HttpResponse def index(request): return HttpResponse("Hello, this is the blog homepage.")
tests.py
- アプリケーションの単体テストを記述するファイルです。
- 開発中に正しい動作を検証するためにテストケースを追加します。
migrations/
- データベースのスキーマ変更を管理するためのファイルが格納されます。
- モデルを変更した際にマイグレーションを作成することで、データベースを最新の状態に保てます。
アプリケーションの登録
settings.pyへの登録
作成したアプリケーションをプロジェクトで認識させるには、settings.py
ファイルにアプリケーションを登録する必要があります。
- プロジェクトの
settings.py
を開きます。 INSTALLED_APPS
リストに新しいアプリケーションを追加します。INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'myapp', # 新しく作成したアプリケーション ]
開発サーバの起動と動作確認
開発サーバの起動
- プロジェクトのルートディレクトリで以下のコマンドを実行します:
python manage.py runserver
- ブラウザで
http://127.0.0.1:8000/
にアクセスし、プロジェクトが正常に動作しているか確認します。
アプリケーションの動作確認
views.py
で定義したビューにアクセスして、正しいレスポンスが返ってくるか確認します。
まとめ
Djangoでのアプリケーションの作成とディレクトリ構成について理解することは、効率的な開発の第一歩です。各ファイルの役割を把握し、プロジェクトとアプリケーションの関係を理解することで、スムーズにWebアプリケーションの開発を進められます。