2011-03-11 20 views
6

Estoy planeando usar Django para un proyecto de varios sitios, donde cada sitio es en su mayoría independiente, pero compartiría algunos modelos en todos los sitios.Instalación única, múltiples dominios y aplicaciones?

Me pregunto si hay una manera de hacer que cada 'aplicación' de Django sea su propio sitio, completo con un nombre de dominio único, y aún así permitir que cada sitio acceda a una aplicación común que contiene algunos modelos para cuentas de usuario, perfiles, etc. .

el plan es permitir inicio de sesión único para cada sitio, compartiendo la información de la cuenta a través de la aplicación común, y la creación de las cookies para cada sitio una vez que el usuario inicie sesión.

sé Django tiene un 'sitios' función, pero no estoy seguro si esto es lo suficientemente robusto para mis necesidades.

¿Alguien puede recomendar una forma de hacerlo o dirigirme hacia algún artículo que pueda ayudar?

ACTUALIZACIÓN

me preguntaba, ¿sería posible a través de Apache, y posiblemente alguna modificación a la urls.py sea capaz de señalar un cierto dominio a una estructura de URL?

por ejemplo, digamos que el sitio principal es mainsite.com, y quiero que uno de los otros dominios apunte a mainsite.com/secondarysite donde secondarysite es una aplicación django dentro de la misma instancia, y haga que apache enmascare el hecho que el dominio secondarysite.com está apuntando a una ubicación diferente?

Respuesta

6

Re. su actualización: no necesita falsificar la estructura de la URL de esa manera, a menos que también desee que las URL como mainsite.com/secondarysite estén disponibles directamente para el usuario.

Supongo que está utilizando name-based virtual hosting. Un enfoque simple pero muy flexible sería que cada directiva <VirtualHost> invoque un script wsgi diferente a través de las directivas de configuración mod_wsgi, y luego cada script wsgi puede establecer os.environ['DJANGO_SETTINGS_MODULE'] apuntando a un archivo de configuración diferente.

Cada uno de esos archivos de configuración puede tener un ROOT_URLCONF diferente, por lo que puede configurar vistas en diferentes rutas, si es necesario. Aproveche el mecanismo include.

Si desea que ambos dominios utilicen la misma base de datos para todo, simplemente haga que ambos archivos de configuración carguen la configuración de la base de datos desde un tercer archivo, ej. settings_shared.py. O si desea enrutar algunos modelos a una base de datos compartida, y otros no, that's possible too. Es fácil imaginar cómo podría ser configurados para cada dominio:

from settings_shared import DATABASES_SHARED 
DATABASES = DATABASES_SHARED.copy() 
DATABASES.update({ ... }) 

Este enfoque se ocupa de la configuración de las direcciones URL y bases de datos para cada dominio. Pero no se ocupa del inicio de sesión único.

Para la parte de inicio de sesión único, que realmente depende de qué tipo de experiencia de usuario que desee y la cantidad de tiempo que tienes;)

intentar la búsqueda de "Django sso".Hay muchas preguntas vienen al caso, por ejemplo: Implementing Single Sign On (SSO) using Django, How to build a secure Django single signon between different sites?, Django + Google SSO openid, Integrating Django and .Net applications using Single Sign On (SSO), (Django) Sharing authentication across two sites that are on different domains

0

Creo que this guy habla de esto.

+0

Enlace está muerto, por desgracia. – mrooney

+0

@mrooney lo arregló, thx –

Cuestiones relacionadas