python3.doc_41
R e i - D r e a m
for Laravel
TOP > Python3 > Django(ディレクトリ構造)
Guest
login

最終投稿日:2022年6月18日

Django(ディレクトリ構造)
ディレクトリ構造のカスタマイズ
デフォルトの構造の難点は、設定ファイルが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 も追加する
レンズモード 【新規購入限定用】
ログインしてコメントを残そう!!


きっぷる