Ошибка при расширении на 500 error django custom view - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь определить пользовательскую ошибку 500 для моего приложения django, просто поместив мой файл 500. html в папку шаблонов.

{% extends "base.html" %}
{% load static %}
{% block body %}

<div class="container"> 
    <div class="row">
      UPS, algo fue mal.
    </div>    
</div>

{% endblock %}

Без первой строки (расширение скелет сети) он работает, но с ним я получил это сообщение:

A server error occurred.  Please contact the administrator.

Я делаю то же самое для ошибок 404, и я отлично работаю. Я здесь совершенно потерялся.

1 Ответ

1 голос
/ 16 июня 2020

Ваш base.html, вероятно, ожидает некоторого контекста, который не передается представлением по умолчанию 500. Из документации :

Представление 500 по умолчанию не передает никаких переменных в шаблон 500. html и отображается с пустым контекстом, чтобы уменьшить вероятность дополнительных ошибок.

В этом случае вы можете:

  1. создать отдельный, минимальный и предпочтительный автономный шаблон для представления 500
  2. убедитесь, что ваш base.html работает правильно с пустым контекстом или
  3. создает пользовательское представление 500, которое проходит в требуемом контексте

Я думаю, что вариант 1 является предпочтительным вариантом, потому что он гарантирует, что 500 страницу всегда можно отобразить. Обратной стороной является то, что любые изменения в вашем base.html вам, возможно, придется применить и к вашему шаблону 500.

Вариант 3 наименее предпочтителен, поскольку он несет наибольший риск того, что страница 500 не будет отображаться, например если 500 вызвано тем, что БД недоступна, и ваше пользовательское представление 500 пытается использовать БД.

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