viernes, 28 de marzo de 2008

Error 404 y 505 diferentes para cada aplicación dentro de un mismo proyecto Django

Django por defecto usa una template error 404 y error 500 por proyecto.
Pero... ¿qué pasa si uno quiere usar diferentes páginas de error 404 y 500 para distintas aplicaciones dentro de un mismo proyecto?
Después de estar tratando de crear mi propio handler 404, y darme cuenta que no podía usar uno distinto por aplicación (Los handler 404 y 500 siguen siendo los mismos para el proyecto), me di cuenta que podía usar dos settings.py y usar las directivas de configuración de apache para usar uno u otro, dependiendo de la URL a la que se acceda.
Entonces, en el httpd.conf (o en alguna extensión que se coloque en el dir httpd/conf.d/):

SetHandler python-program
PythonHandler django.core.handlers.modpython
PythonPath "['/home/userx/djangoapps'] + sys.path"
SetEnv DJANGO_SETTINGS_MODULE proyect.settings
PythonDebug On


SetHandler python-program
PythonHandler django.core.handlers.modpython
PythonPath "['/home/userx/djangoapps'] + sys.path"
SetEnv DJANGO_SETTINGS_MODULE proyect.settings_app2
PythonDebug On

Luego tengo dos settings, en el nuevo (app2) dejo mi aplicación antes que las demás para que ubique las templates 404 y 500 desde ahí.

INSTALLED_APPS = (
...
'proyect.app2',
'proyect.app1',
...,
)


y pongo debug=False y chan, chan! tengo un sólo proyecto con dos aplicaciones que direccionan a distintas páginas de error 404 y 500.
Muy chanchullesco? Bueno... por lo menos resulta.

No hay comentarios: