Python Django项目在两个域上-限制对URL/视图的访问

Python Django项目在两个域上-限制对URL/视图的访问,python,django,django-views,django-urls,Python,Django,Django Views,Django Urls,我正在做django项目。 它利用多个小应用程序——其中一个用于常见的东西(常见的模型、表单等) 我想将整个项目分为两个领域,例如: corporatedomain.com和userportal.com 我希望corporatedomain.com使用不同的URL,userportal.com也一样 可能吗?如果是,我该怎么做?我应该如何配置我的URL?无论如何,您将有单独的设置文件,因此为每个域定义不同的根URLCONF 更新:如果不想使用不同的设置,则必须编写中间件,该中间件将使用HTTP\

我正在做django项目。 它利用多个小应用程序——其中一个用于常见的东西(常见的模型、表单等)

我想将整个项目分为两个领域,例如:

corporatedomain.com和userportal.com

我希望corporatedomain.com使用不同的URL,userportal.com也一样


可能吗?如果是,我该怎么做?我应该如何配置我的URL?

无论如何,您将有单独的设置文件,因此为每个域定义不同的
根URLCONF


更新:如果不想使用不同的设置,则必须编写中间件,该中间件将使用
HTTP\u主机
头更改属性。这是.

也许你可以看看Django网站框架。来自Django官方文件:

Django附带了一个可选的“站点”框架。它是一个钩子,用于将对象和功能关联到特定的Web站点,它是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)),
    )
您应该在站点表中添加所需数量的条目,并在已安装的应用程序中添加
django.contrib.sites
app,并在设置中添加一个Site\u ID变量,该变量与正确的站点ID绑定。如果没有域信息可用(例如在开发会话中),请使用Site\u ID=1。有关站点的详细信息(请参阅此页中的ID)。 在我的设置中,我使用以下方法:

SITE_ID = os.environ.get('SITE_ID', 1)

我已经在我的每一个资源中设置了正确的SITE\u ID变量。

我该怎么做?:)您是否为两个域都有一个设置文件,或者为不同的域使用不同的设置?目前我有一个设置.py文件,那么现在是时候有两个:-)但是如果您真的想为两个域使用单一设置,那么请阅读我回答中的更新。好的,如果我想使用两个设置文件,我可以在哪里配置它?我的意思是,我告诉服务器对某些域使用特定的设置?