Django アプリケーションの登録

Django アプリケーションを作成したら、それが属する Django プロジェクトDjango アプリケーションの登録設定を行います。

この記事は Django 1.11.11 (LTS) をベースにしています。

Django アプリケーションの登録

まず前提として、ここではプロジェクトのディレクトリが myprj ディレクトリで、 アプリケーションのディレクトリが同じレベルの myapp1 ディレクトリであるとします。

$ tree -I 'venv|__pycache__' -d .
.
├── myapp1
└── myprj

さて、このときアプリケーションは myprj/settings.py 設定ファイル内の INSTALLED_APPS で次のように設定します。

...
INSTALLED_APPS = [
    'myapp1',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]
...

具体的な設定としては、基本的にはこのようにパッケージを登録すれば OK です。

もう少し詳しく言うと、ここでは以下のような設定をしたことになります。

INSTALLED_APPS の設定

INSTALLED_APPS には、アプリケーション構成クラスを直接指定するか、 使用するパッケージを設定することになってます。

アプリケーション構成クラス (application configuration class) というのは、AppConfig クラスもしくはその派生クラスです。

INSTALLED_APPS でアプリケーション構成クラスを指定

ここで myapp1 という Django アプリケーションを作成しましたが、この時にはデフォルトで作成されるファイル apps.py は次のようになっています。

from django.apps import AppConfig

class Myapp1Config(AppConfig):
    name = 'myapp1'

ここで自動的に作成されている AppConfig のサブクラスである、 Myapp1Config がアプリケーション構成クラスです。 INSTALLED_APPS には、これを直接指定できます。

...
INSTALLED_APPS = [
    'myapp1.apps.Myapp1Config',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]
...

AppConfig クラスの name 属性でアプリケーションへのパスを指定しています。

INSTALLED_APPS でパッケージを指定

一方、INSTALLED_APPSmyapp1 を登録すると、それはパッケージを指定したことになります。

この場合、myapp1/__init__.py 内で、 default_app_config 変数を探して、その変数にセットされたアプリケーション設定クラス名を使います。

デフォルトでこれは構成されていません。この場合はデフォルトのアプリケーションクラスとして、AppConfig クラスを使います。

この場合はデフォルトで作成される apps.py は使われません。

もし、myapp1/__init__.py が次のように設定されているとします。

default_app_config = 'myapp1.apps.Myapp1Config'

すると apps.py 内の Myapp1Config を探して、それをアプリケーション構成クラスとして利用します。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Python 入門