Es posible ejecutar una aplicación Django en el mismo servidor de una
aplicación impulsada por otra tecnología. La manera más directa de hacer esto
es usar el archivo de configuración de Apache, httpd.conf
, para delegar
patrones de URL diferentes a distintas tecnologías (Nota que el Capítulo 20
cubre el despliegue con Django en Apache/mod_python, por lo tanto tal vez
valga la pena leer ese capítulo primero antes de intentar esta integración).
La clave está en que Django será activado para un patrón particular de URL sólo
si tu archivo httpd.conf
lo dice. El despliegue por omisión explicado en el
Capítulo 20, asume que quieres que Django impulse todas las páginas en un
dominio particular:
<Location "/">
SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE mysite.settings
PythonDebug On
</Location>
Aquí, la línea <Location "/">
significa "maneja cada URL, comenzando en la
raíz", con Django.
Esta perfectamente bien limitar esta directiva <Location>
a cierto árbol de
directorio. Por ejemplo, digamos que tienes una aplicación PHP existente que
impulsa la mayoría de las páginas en un dominio y quieres instalar el sitio de
administración de Django en /admin/
sin afectar el código PHP. Para hacer
esto, sólo configura la directiva <Location>
a /admin/
:
<Location "/admin/">
SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE mysite.settings
PythonDebug On
</Location>
Con esto en su lugar, sólo las URLs que comiencen con /admin/
activarán
Django. Cualquier otra página usará cualquier infraestructura que ya exista.
Nota que adjuntar Django a una URL calificada (como /admin/
en el ejemplo de
esta sección) no afecta a Django en el análisis de las URLs. Django trabaja con
la URL absoluta (ej., /admin/people/person/add/
), no con una versión
"recortada" de la URL (ej., /people/person/add/
). Esto significa que tu
URLconf raíz debe incluir el prefijo /admin/
.