Djangoプロジェクトにおけるディレクトリ構成とテンプレートの追加
DjangoでWebアプリケーションを開発する際、プロジェクトとアプリケーションのディレクトリ構成を正しく理解することは非常に重要です。この記事では、views.py
に対応するテンプレート(templates
)をディレクトリ構成に追加する方法について説明します。
全体の流れ
- ユーザーリクエスト: ユーザーがブラウザで特定のURLにアクセスします。
-
URLディスパッチ:
urls.py
で対応するビュー関数を呼び出します。 -
ビュー処理:
views.py
内のビュー関数が処理を行い、テンプレートをレンダリングします。 - テンプレート表示: テンプレート内でHTMLが生成され、ユーザーに返送されます。
更新されたディレクトリ構成
以下は、views.py
に対応するテンプレートを含めたディレクトリ構成の例です。
myproject/ # プロジェクト名
├── manage.py
├── myproject/ # プロジェクト設定ディレクトリ
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── myapp/ # アプリ名
├── __init__.py
├── admin.py
├── apps.py
├── migrations/ # マイグレーションファイルを格納
│ └── __init__.py
├── models.py
├── tests.py
├── views.py # ビュー関数を定義
├── urls.py # アプリケーションのURLパターンを定義
└── templates/ # テンプレートファイルを格納
└── myapp/ # アプリ名でディレクトリを作成
├── form.html # フォームページのテンプレート
└── results.html # 結果ページのテンプレート
説明
templates/
ディレクトリ
- テンプレートファイルを格納するためのディレクトリです。
- アプリ名(
myapp
)のサブディレクトリを作成することで、複数のアプリ間でテンプレート名が衝突するのを防ぎます。 - テンプレートのパスは
templates/myapp/
となります。
form.html
と results.html
-
form.html
: ユーザーが国と指標を選択するフォームを表示するテンプレート。 -
results.html
: 選択されたデータの比較結果を表示するテンプレート。
views.py
とテンプレートの関係
-
views.py
で定義されたビュー関数が、対応するテンプレートをレンダリングします。
例:
from django.shortcuts import render
def form(request):
return render(request, 'myapp/form.html')
def results(request):
return render(request, 'myapp/results.html')
補足
テンプレートディレクトリの設定
- Djangoはデフォルトで各アプリケーション内の
templates/
ディレクトリを検索します。 - 特別な設定を追加しなくても、上記の構成でテンプレートを認識します。
テンプレート名の命名
- テンプレートファイルは、対応するビュー関数やページの役割がわかるような名前を付けると管理しやすくなります。
静的ファイルの配置
- CSSやJavaScriptなどの静的ファイルを使用する場合は、
static/
ディレクトリを作成し、同様にアプリ名のサブディレクトリを設けるとよいでしょう。
myapp/
└── static/
└── myapp/
├── css/
├── js/
└── images/