Можно ли сделать шаблон из промежуточного программного обеспечения? - PullRequest
1 голос
/ 05 мая 2010

У меня есть промежуточное ПО, которое выполняет некоторую обработку. При определенных условиях это вызывает исключение, и пользователь видит мой шаблон 500.html - правильно отвечающий на статус HTTP 500.

Теперь, за некоторыми исключениями, я хотел бы сделать другой шаблон, чем по умолчанию 500.html. Возможно ли это / как этого добиться?

Ответы [ 3 ]

1 голос
/ 05 мая 2010

Вы можете перехватить эти исключения и вернуть объект HttpResponse для визуализации вашего пользовательского шаблона. Или, возможно, перенаправление также подходит.

0 голосов
/ 05 мая 2010

Промежуточное программное обеспечение может быть решением:

class MyExceptionMiddleware:
   def process_exception(self, request, exception):

     if isinstance(exception, CustomException):
       template = loader.get_template('Other500.html')
       context = RequestContext(request, {'message': 'Custom Message'})
       return HttpResponseForbidden(template.render(context))

     return None

Не забудьте зарегистрировать промежуточное ПО в settings.py:

MIDDLEWARE_CLASSES = (
    ....
    'app.middleware.MyExceptionMiddleware',
0 голосов
/ 05 мая 2010

Да ... и нет.

Вы можете визуализировать все, что хотите (ваш веб-сервер имеет хорошее объяснение, как это сделать), но увидит ли пользователь, что это его выбор - через настройки браузера. Возможно, вы что-то визуализируете, но браузер по-прежнему показывает стандартную страницу с ошибкой.

...