標準の startproject コマンドを使うと、同じ名前のフォルダが二重になります。
結果として次のような構成に:
myproject/ # プロジェクト全体フォルダ ├─ myproject/ # 設定フォルダ │ ├─ settings.py │ ├─ asgi.py │ ├─ urls.py │ ├─ wsgi.py ├─ manage.py
同名フォルダが2つあるため、後々の管理やimport文、環境設定で混乱しやすくなります。
投稿日:
Djangoで新しくプロジェクトを作成すると、設定ファイルを含むフォルダが自動的に作成されます。
しかしこのフォルダ名がプロジェクト名と同じになるため、最初は「どっちが設定フォルダで、どっちがアプリ全体なのかわかりづらい…」と混乱しがちです。
そこで今回は、
新規プロジェクト作成時に設定フォルダ名を指定する方法
すでに作成済みの設定フォルダをリネームする方法
この2つのパターンを紹介します。
標準の startproject コマンドを使うと、同じ名前のフォルダが二重になります。
結果として次のような構成に:
myproject/ # プロジェクト全体フォルダ ├─ myproject/ # 設定フォルダ │ ├─ settings.py │ ├─ asgi.py │ ├─ urls.py │ ├─ wsgi.py ├─ manage.py
同名フォルダが2つあるため、後々の管理やimport文、環境設定で混乱しやすくなります。
startproject時に設定フォルダ名を指定する場合は、startproject コマンドの 第1引数に設定フォルダ名、第2引数として「.」(ドット) を指定します。
ターミナルで以下を実行して、まずプロジェクト全体を格納するフォルダを作成します。
mkdir myproject cd myproject
続いて、現在のディレクトリ内で次のコマンドを実行します。
django-admin startproject config .
このようにすると、
「myproject」フォルダ内に manage.py と「config」フォルダが生成されます。
構成は次の通りです:
myproject/ ├─ config/ │ ├─ settings.py │ ├─ asgi.py │ ├─ urls.py │ ├─ wsgi.py ├─ manage.py
これで、外側の「プロジェクト全体フォルダ」と内側の「設定フォルダ」が明確に分かれ、管理しやすい構成のプロジェクトが最初から作成されます。
すでに作成済みのプロジェクトでも、フォルダ名を後から変更できます。
myproject/ ├─ config/ │ ├─ settings.py │ ├─ asgi.py │ ├─ urls.py │ └─ wsgi.py ├─ manage.py
config/settings.py
# 変更前 ROOT_URLCONF ='myproject.urls' WSGI_APPLICATION ='myproject.wsgi.application' # 変更後ROOT_URLCONF ='config.urls' WSGI_APPLICATION ='config.wsgi.application'
manage.py と config/wsgi.py, asgi.py内のDJANGO_SETTINGS_MODULE の値を変更します。
# 変更前
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')
# 変更後
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings')
これでDjangoは新しい設定フォルダを参照するようになります。
python manage.py runserver
以上を実行してエラーが出ずにサーバーが起動すれば成功です。
今回は例として設定フォルダ名を「config」としましたが、任意の名前に変更できます。
設定フォルダの名前を「config」のように明確にしておくことで、プロジェクト構造の見通しがぐっと良くなります。
また、他の開発者と共有する際にもわかりやすく、長期的にメンテナンスしやすい構成になります。
Djangoおすすめのディレクトリ構成はこちら↓