よしたく blog

ほぼ週刊で記事を書いています

【Django】アプリケーションをディレクトリにまとめた時の設定変更箇所

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",
]