我正在研究django项目。 它使用多个小应用程序 - 其中一个用于常见事物(常见模型,表格等)。
我想将整个项目分为两个域,例如:
corporatedomain.com和userportal.com
我希望corporatedomain.com使用不同的网址,对于userportal.com也是如此。
这可能吗?如果是这样,我该怎么做?我该如何配置我的网址?
答案 0 :(得分:0)
无论如何,您将拥有单独的设置文件,因此请为每个域定义不同的ROOT_URLCONF
。
更新:如果您不想使用不同的设置,则必须编写中间件,该中间件将使用HTTP_HOST
标头更改request.urlconf
属性。这是example of such middleware。
答案 1 :(得分:0)
也许您可以查看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变量。