在子域上服务Django管理站点



我有一个运行Django、uWSGI和Nginx的项目。目前,我使用默认的Django管理站点,在example.com/admin上提供服务。我想更改此设置,使管理站点仅在admin.example.com可用。

最好的方法是什么?

我曾想过启动一个全新的Django项目,在admin.example.com上提供服务,但使用与运行example.com的项目相同的数据库设置,但我希望有更优雅的东西,因为这将涉及在项目之间复制许多设置和应用程序。基本上,两者之间的唯一区别是,一个安装了管理站点和URL模式,另一个没有。

(我这样做的原因是最终想要使用类似谷歌身份验证代理的东西来保护管理网站,但让非管理员登录通过正常的身份验证后端。看起来我可以通过指定Django对admin.example.com使用HTTP基本身份验证,但对example.com使用默认后端来实现这一点。)

只需创建一个新的设置文件,其中包括原始设置并定义一个特殊的ROOT_URLCONF设置。现在,您只需在管理子域上部署具有DJANGO_SETTINGS_MODULE的应用程序。

例如:

settings_admin.py

from settings import *
ROOT_URLCONF = 'urls_admin'

urls_admin.py

from django.conf.urls import patterns, include, url
from django.contrib import admin
urlpatterns = patterns('',
    url(r'', include(admin.site.urls)),
)

最新更新