Django - обрабатывать все исключения с помощью пользовательских шаблонов - PullRequest
0 голосов
/ 25 февраля 2020

Я хочу иметь возможность генерировать исключения с любым кодом состояния. У меня есть такая структура шаблона

templates
|---error
|   |----401.html
|   |----403.html
|   |----404.html
|   |----451.html
|   |----500.html

Есть ли способ вызвать исключение примерно так: raise Error("Not available here!", status_code=451), и это автоматически покажет шаблон templates/error/451.html? И когда возникает ошибка сервера, templates/error/500.html должен быть обработан.

Я пытался использовать handler401, handler500 и вызывать пользовательское исключение, но ничего не работает ...

# exceptions.py
class HttpResponseNotAuthenticated(HttpResponse):
    status_code = 401


# views.py
def pseudo_view():
    return HttpResponseNotAuthenticated("Please login")

1 Ответ

0 голосов
/ 25 февраля 2020

Ошибки обрабатываются из коробки с помощью Django, что, я полагаю, относится к тому, о чем вы говорите, когда говорите «ничего не работает»

Вам необходимо переопределить эту функцию следующим образом: https://docs.djangoproject.com/en/3.0/topics/http/views/#customizing -error-views

Укажите обработчики, как показано в вашем URLconf (установка их в другом месте не будет иметь никакого эффекта).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...