デフォルトの構造の難点は、設定ファイルが1つなので、[開発用][本番用]の使い分けができない点と、アプリの数が多くなるとツリー構成が煩雑になりがちです。。
[PROJECT]
|
+--- [project]
| |
| +--- settings.py ※設定が複数できない
+--- [myApp1] ※複数のアプリをまとめるディレクトリが欲しい
+--- [myApp2]
+--- [myApp3]
上記のツリー構成を以下の様にしたい
[PROJECT]
|
+--- 【config】 ※プロジェクトの設定をまとめるディレクトリ
| |
| +--- 【settings】 ※settings をディレクトリにする
| | |
| | +--- base.py ※共通の設定
| | +--- procution.py ※本番専用設定
| | +--- develop.py ※開発専用設定
| +--- wsgi.py ※本番用ファイル
+--- 【apps】 ※アプリをまとめるディレクトリ
| |
| +--- [myApp1]
| +--- [myApp2]
| +--- [myApp3]
+--- 【my_lib】 ※共通ライブラリ等の置き場
+--- 【templates】 ※テンプレート置き場
+--- 【static】 ※共通の静的ファイル置き場
【1】プロジェクト作成 myProject
python C:\Users\xxxx\Anaconda3\Lib\site-packages\django\bin\django-admin.py startproject myProject
【2】settings.py の修正
デフォルトのプロジェクト名だったディレクトリ名を config にリネームする
ROOT_URLCONF = 'myProject.urls'
⇒
ROOT_URLCONF = 'config.urls'
WSGI_APPLICATION = 'myProject.wsgi.application'
⇒
WSGI_APPLICATION = 'config.wsgi.application'
実際にディレクトリ myProject を config にリネームする
【3】作成した config 直下に settings ディレクトリを作成する
また、作成した直下にファイル __init__.py も追加する
【4】settings.py の移動
作成した settings ディレクトリの直下へ settings.py を移動し、base.py にリネームする
また、空のファイル procution.py develop.py も追加する
【5】【4】で作成した procution.py develop.py ファイルに base.py の設定を読み込ませるためインポートする
from .base import *
【6】manage.py の修正
プロジェクト直下にある manage.py を修正していままでの変更の整合性ととります。
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myProject.settings")
⇒
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings.develop")
【メモ】
上記設定で常に開発の設定を参照する
本番の設定を参照した場合は、直接 config.settings.procution に変更するか、以下で良いらしい。。
python manage.py shell --settings=config.settings.production
【7】wsgi.py の修正
apache 経由(本番環境)で実行する場合は修正が必要です。
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myProject.settings")
⇒
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings.develop")
【8】アプリをまとめるディレクトリを作成するため base.py にパスを通す
base.py(旧settings.py)に以下を追加する
import sys
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
BASE_DIR = os.path.dirname(BASE_DIR) ※この行を追加(config の上の階層にする)
sys.path.append(os.path.join(BASE_DIR, "apps")) ※この行を追加
で、実際に myProject 直下に apps ディレクトリを作成する
【9】テンプレートディレクトリを作る
base.py(旧settings.py)に以下を追加する
'DIRS': [
os.path.join(BASE_DIR, 'templates'),
],
で、実際に myProject 直下に templates ディレクトリを作成する
【10】静的ディレクトリを作る
base.py(旧settings.py)に以下を追加する
STATIC_URL = '/static/' ※の行は最後の方にある
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
]
で、実際にプロジェクト直下に static ディレクトリを作成する
【11】独自ライブラリ置き場を作る
base.py(旧settings.py)に以下を追加する
sys.path.append(os.path.join(BASE_DIR, 'my_lib'))
で、実際に myProject 直下に my_lib ディレクトリを作成する
また、作成した直下にファイル __init__.py も追加する