изменить поведение шаблона django на silent_variable_failure = False - PullRequest
5 голосов
/ 20 августа 2009

http://www.djangobook.com/en/beta/chapter10/

"Обратите внимание на то, что django.core.exceptions.ObjectDoesNotExist, который является базовым классом для всех исключений DoNotExist API-интерфейса базы данных Django, имеет silent_variable_failure = True. Поэтому, если вы используете шаблоны Django с объектами модели Django, любое исключение DoesNotExist завершится ошибкой молча. "

Пока я развиваюсь, я бы хотел изменить это поведение, т. Е. Silent_variable_failure = False. Как сделать это изменение постоянным во время разработки под Django?

Спасибо, Ник

Ответы [ 3 ]

4 голосов
/ 21 августа 2009

В settings.py я добавил TEMPLATE_STRING_IF_INVALID = "неверная строка"% s "" См. http://docs.djangoproject.com/en/dev/ref/templates/api/#invalid-template-variables для получения дополнительной информации.

Включает это предупреждение «Многие шаблоны, в том числе на сайте администратора, полагаются на молчание системы шаблонов при обнаружении несуществующей переменной. Если вы присвоите значение, отличное от '', для TEMPLATE_STRING_IF_INVALID, у вас возникнут проблемы с отображением этих шаблонов и сайтов. . "

1 голос
/ 20 августа 2009

Система шаблонов Django ищет silent_variable_failure как атрибут любого исключения.

Это означает, что вы должны определить собственное исключение с этим атрибутом, установленным в False.

Для стандартного ObjectDoesNotExist исключения, сгенерированного ORM и т. Д., Простейшим решением было бы изменение исходного кода Django в вашей коробке разработки (django / core / exceptions.py).

Если бы это было то, что вам нужно было изменить в производственной системе, то вам нужно было бы: 1) определить свой собственный класс исключений, 2) установить менеджера в вашей модели, который вызывается из шаблона (вместо непосредственного использования методов ORM) , а затем 3) перехватите DoesNotExist в вашем менеджере и повторно вызовите исключение с вашим собственным классом.

0 голосов
/ 27 августа 2013

Другой параметр, TEMPLATE_DEBUG, может быть установлен в True в settings.py, чтобы изменить это поведение.

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