在子域上提供Django管理站点

use*_*534 3 django nginx django-admin django-authentication uwsgi

我有一个运行Django,uWSGI和Nginx的项目.目前我使用默认的Django管理站点,服务于example.com/admin.我想改变它,以便管理站点仅在admin.example.com.

做这个的最好方式是什么?

我曾经考虑过要开始一个全新的Django项目,admin.example.com但是使用与运行的项目相同的数据库设置example.com,但我希望有更优雅的东西,因为这会涉及在项目之间复制很多设置和应用程序.基本上两者之间的唯一区别是,安装了管理站点和URL模式,而不会安装.

(我的理由是最终想要使用google auth proxy之类的东西来保护管理站点,但是非管理员登录会通过正常的身份验证后端.看起来我可以通过指定Django使用HTTP Basic Auth来实现这一点admin.example.com,但坚持使用默认后端example.com.)

bik*_*der 6

只需创建一个包含原始设置的新设置文件,并定义一个特殊ROOT_URLCONF设置.现在,您只需要DJANGO_SETTINGS_MODULE在该管理子域上部署您的应用程序.

例如:

settings_admin.py

from settings import *
ROOT_URLCONF = 'urls_admin'
Run Code Online (Sandbox Code Playgroud)

urls_admin.py

from django.conf.urls import patterns, include, url
from django.contrib import admin
urlpatterns = patterns('',
    url(r'', include(admin.site.urls)),
)
Run Code Online (Sandbox Code Playgroud)