django обрабатывают поведение изменения по шаблону к silent_variable_failure = Ложь

Проблема заключается в здесь:

... = (HashMap<String, String>)session.getAttribute("attributeKey");

результат session.getAttribute(...) object, который мог быть чем-либо, но так как Вы "знаете", что это HashMap<String, String>, Вы просто бросаете, не проверяя его сначала. Таким образом, предупреждение. Чтобы быть педантичными, которым Java хочет, чтобы Вы были в этом случае, необходимо получить результат и проверить, что это - совместимость с instanceof.

5
задан 20 August 2009 в 08:24
поделиться

2 ответа

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

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

4
ответ дан 15 December 2019 в 01:07
поделиться

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

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

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

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

1
ответ дан 15 December 2019 в 01:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: