Si desea este comportamiento para todos los puntos de vista sobre su sitio, Es posible que desee escribir su propio middleware con un método process_exception
.
from django.template import TemplateDoesNotExist
from django.views.defaults import page_not_found
class TemplateDoesNotExistMiddleware(object):
"""
If this is enabled, the middleware will catch
TemplateDoesNotExist exceptions, and return a 404
response.
"""
def process_exception(self, request, exception):
if isinstance(exception, TemplateDoesNotExist):
return page_not_found(request)
Si ha definido su propio handler404
que se necesita para reemplazar page_not_found
anteriormente. No estoy seguro de inmediato cómo se puede convertir la cadena en el handler404
exigible requerida en el middleware ..
para permitir que su middleware, añadirlo a MIDDLEWARE_CLASSES
en settings.py
. Tenga cuidado con la posición donde lo agrega. Se aplica la advertencia estándar de middleware Django:
De nuevo, el middleware se ejecuta en orden inverso durante la fase de respuesta, que incluye process_exception. Si un middleware de excepción devuelve una respuesta, las clases de middleware sobre ese middleware no se llamarán en absoluto.
necesidad de importar la excepción: 'TemplateDoesNotExist' de importación django.template. –
Gracias por la adición. Olvidé de dónde importar la excepción, ya que no pude verificar. Editado la respuesta. –
Sí, sé que puedo hacer esto, pero se convierte en un estándar en todos los puntos de vista. Esperaba que hubiera una manera global de hacer esto. – Andrea