两个域上的Django项目限制对url/view的访问

2024-10-02 10:24:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我在做django项目。 它利用了多个小应用程序——其中一个应用程序用于公共事务(通用模型、表单等)。在

我想把整个项目分成两个领域,例如:

在corporatedomain.com公司以及用户门户网站在

我想要corporatedomain.com公司使用不同的URL,对于用户门户网站. 在

有可能吗?如果是,我该怎么做?我应该如何配置我的网址?在


Tags: 项目django用户模型com应用程序url利用
2条回答

也许你可以看看Django Site Framework。来自Django官方文件:

Django comes with an optional “sites” framework. It’s a hook for associating objects and functionality to particular Web sites, and it’s a holding place for the domain names and “verbose” names of your Django-powered sites.

你可以用这个方法

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)),
    )

您应该向Site Table添加所需数量的条目,并在已安装的应用程序中添加django.contrib.sites应用程序,并将Site_ID变量添加到绑定了正确站点ID的设置中。如果没有可用的域信息(例如在开发会话中),请使用Site_ID=1。有关此post中站点标识的详细信息。 在我的设置中,我使用以下方法:

^{pr2}$

我在我的每一个enrivorites中设置了正确的SITE_ID变量。在

您将有单独的设置文件,因此为每个域定义不同的ROOT_URLCONF。在

更新:如果不想使用不同的设置,则必须编写中间件,该中间件将使用HTTP_HOST头来更改^{}属性。这是example of such middleware。在

相关问题 更多 >

    热门问题