Если вам нужно такое поведение для всех просмотров на вашем сайте, вы можете написать свое собственное промежуточное ПО с помощью метода 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)
Если вы определили свой handler404
, вам необходимо заменить page_not_found
выше. Я не сразу уверен, как вы можете преобразовать строку handler404
в вызываемый компонент, необходимый в промежуточном программном обеспечении ..
Чтобы включить промежуточное ПО, добавьте его в MIDDLEWARE_CLASSES
в settings.py
. Будьте осторожны с положением, где вы добавляете это. Действует стандартное предупреждение промежуточного программного обеспечения Django:
Опять же, промежуточное ПО запускается в обратном порядке на этапе ответа, который включает в себя process_exception. Если промежуточное программное обеспечение исключения возвращает ответ, классы промежуточного программного обеспечения выше этого промежуточного программного обеспечения вообще не будут вызываться.