アプリ構成ベストプラクティス
プロジェクト構成を分かりやすく。
ディレクトリ、ファイル構成の最適化。
デフォルトのまま構築すると、少々問題がある
- ベースと設定のディレクトリ名が被る問題
- staticファイルがアプリごとに配置されてしまう問題
- テンプレートフォルダがアプリごとに配置されてしまう問題
ベースと設定のディレクトリ名が被る問題
設定ファイルディレクトリ名を指定した上で、コマンド実行。
mkdir django
cd django
startproject
django-admin.py startproject config .
django
├── config
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── manage.py
staticファイルがアプリごとに配置されてしまう問題
ディレクトリ構成
ベースディレクトリ直下に、静的ファイル用ディレクトリを設置する。
django
├── config
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── manage.py
├── static
│ ├── app
│ ├── images
│ └── js
└── templates
静的ファイルディレクトリ設定
STATIC_URL
静的ファイル配信用ディレクトリ。
python manage.py startapp [app]にて生成されたディレクトリ内のstaticフォルダの場所を指す。
ベストプラクティス上、使用しない。
STATICFILES_DIRS
任意の、staticフォルダの定義が可能。
STATIC_ROOT
本番環境で使用するstatisフォルダ設定に使用。
DEBUG=False(本番環境)の場合に適用される。
example
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
PROJECT_NAME = os.path.basename(BASE_DIR)
STATICFILES_DIRS = os.path.join(BASE_DIR, 'static')
テンプレートフォルダがアプリごとに配置されてしまう問題
ディレクトリ構成
ベースディレクトリ直下に、template用ディレクトリを設置する。
django
├── config
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── manage.py
├── static
└── templates
templateディレクトリ設定
TEMPLATESにて設定を行う。
setting.py
TEMPLATES = [
{
...
'DIRS': [<適切なPath>],
},
]