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_APPS に myapp1 を登録すると、それはパッケージを指定したことになります。
この場合、myapp1/__init__.py 内で、 default_app_config 変数を探して、その変数にセットされたアプリケーション設定クラス名を使います。
デフォルトでこれは構成されていません。この場合はデフォルトのアプリケーションクラスとして、AppConfig クラスを使います。
この場合はデフォルトで作成される apps.py は使われません。
もし、myapp1/__init__.py が次のように設定されているとします。
default_app_config = 'myapp1.apps.Myapp1Config'
すると apps.py 内の Myapp1Config を探して、それをアプリケーション構成クラスとして利用します。