Django如何在一个Django项目中管理不同的子域



我希望我的Django项目可以在许多不同的端点访问。对于一个应用程序,我希望它在app.domain.com可访问,而对于另一个应用,我希望其在dashboard.domain.com可访问。我怎样才能做到这一点?我正在使用AWS Elastic Beanstalk和Route 53。

我试着查看Django的djangoproject.com和他们的Github repo。然而,我想不通。谢谢

您可以定义两个settings.py文件,以及两个关联的urls.py文件:

app_settings.py

from my_project.settings import *
ROOT_URLCONF = 'my_project.app_urls'
ALLOWED_HOSTS = ['app.domain.com']

dashboard_settings.py

from my_project.settings import *
ROOT_URLCONF = 'my_project.dashboard_urls'
ALLOWED_HOSTS = ['dashboard.domain.com']

my_project/app_urls.pymy_project/dashboard_urls.py中分别定义每个网站的URL

然后用这两个不同的设置文件(例如使用DJANGO_SETTINGS_MODULE环境变量(启动django项目的两个实例(使用uwsgi、gunicorn ou,无论您使用什么(。

这样,两个实例共享相同的代码库,但公开不同的url。

例如,使用uwsgi,您可以拥有这两个文件(具有不同的端口(:

app.ini

[uwsgi]
http = 127.0.0.1:8001
module = my_project.wsgi
processes = 4
threads = 2
pidfile = app.pid
env = DJANGO_SETTINGS_MODULE=my_project.app_settings

dashboard.ini

[uwsgi]
http = 127.0.0.1:8002
module = my_project.wsgi
processes = 4
threads = 2
pidfile = app.pid
env = DJANGO_SETTINGS_MODULE=my_project.dashboard_settings

最新更新