Django でアプリを複数作っていくとルートディレクトリが見づらくなっていく。
. ├── accounts ├── manage.py ├── posts
そこで、app ディレクトリを作成し、その中にアプリを入れる形をとってみた。
. ├── app ├── accounts ├── posts ├── manage.py
それに伴い、いくつか設定を変えなければいけない部分があったので、メモしておく
アプリケーションの設定変更
今回は posts を例に出して進めていく。
まずはapp/posts/apps.py
を変更する。
ルートディレクトリに作成した時は、次のようになる。 name がアプリケーション名になっている。
from django.apps import AppConfig class PostsConfig(AppConfig): name = "posts"
app ディレクトリ配下に作成した時は、次のようになる。 name がルートディレクトリに作成したときと変わっている。 app は posts から見た親ディレクトリを指していて、ドットで階層を表している。 つまり、name の部分に親のディレクトリも記述するようになる。
from django.apps import AppConfig class PostsConfig(AppConfig): name = "app.posts"
アプリケーション側の設定は以上になる。 アプリケーションが変わったことにより、それを読み込む settings.py も変更が必要になる。
settings.py の設定変更
作成直後にアプリケーションを読み込む設定は何も書かれていないけど、ルートディレクトリに作成した時は、次のように設定することが多い。
INSTALLED_APPS = [ """ (中略) """ "posts.apps.PostsConfig", ]
app ディレクトリ配下に作成した時は、settings.py の INSTALLED_APPS が次のようになる。
ここでもapp.
を付けて、親フォルダとディレクトリを示すドットを付ける。
INSTALLED_APPS = [ """ (中略) """ "app.posts.apps.PostsConfig", ]