也许你可以看看Django Site Framework。来自 Django 官方文档:
Django 带有一个可选的“站点”框架。它是将对象和功能与特定网站相关联的挂钩,它是您的 Django 驱动网站的域名和“冗长”名称的存放地。
然后你可以使用这种方法
from django.conf.urls import patterns, include, url
from django.contrib import admin
from django.contrib.sites.models import Site
current_site = Site.objects.get_current()
if 'userportal' in current_site.domain:
urlpatterns = patterns('',
url(r'', include('userapp.urls')),
url(r'^admin/', include(admin.site.urls)),
)
else:
urlpatterns = patterns('',
url(r'', include('corporateapp.urls')),
url(r'^admin/', include(admin.site.urls)),
)
您应该在站点表中添加尽可能多的条目,并在您的 INSTALLED_APP 中添加 django.contrib.sites 应用程序,并将 SITE_ID 变量添加到与正确站点 ID 绑定的设置中。当没有可用的域信息时使用 SITE_ID = 1(例如在您的开发会话中)。此post 中有关 SITE_ID 的更多信息。
在我的设置中,我使用以下方法:
SITE_ID = os.environ.get('SITE_ID', 1)
我在每个环境中都设置了正确的 SITE_ID 变量。