Django で複数のドメインを構築する方法です。django-hosts を使用すると、Django プロジェクト内でマルチドメインをルーティングして、ドメインごとにアプリケーションを指定できます。
django-hosts
まず pip を使用して、django-hosts をインストールします。
> pip install django-hosts
settings.py
settings.py の INSTALLED_APPS に django_hosts を、MIDDLEWARE に django_hosts.middleware.HostsRequestMiddleware と django_hosts.middleware.HostsResponseMiddleware を追記します。また、ROOT_HOSTCONF と DEFAULT_HOST 環境変数を追記します。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django_hosts',
...
]
MIDDLEWARE = [
'django_hosts.middleware.HostsRequestMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django_hosts.middleware.HostsResponseMiddleware',
]
ROOT_URLCONF = 'config.urls'
ROOT_HOSTCONF = '[プロジェクト名].hosts'
DEFAULT_HOST = '[ルート名]'
hosts.py
プロジェクト名のフォルダー内に hosts.py ファイルを作成し、次の内容を入力して保存します。
from django.conf import settings
from django_hosts import patterns, host
host_patterns = patterns('',
host('[ドメイン1]', '[アプリケーション名1].urls', name='[ルート名1]'),
host('[ドメイン2]', '[アプリケーション名2].urls', name='[ルート名2]'),
)
それぞれの行 (ルート) でドメイン名と割り当てたいアプリケーションを記入します。
ここで、settings.py に記入した DEFAULT_HOST のルート名をいずれかの行 (ルート) に入れる必要があります。入っていない場合は、次のエラーが発生します。
Invalid DEFAULT_HOST setting: No host called '[ルート名]' exists
コメントする