Проблема заключается в здесь:
... = (HashMap<String, String>)session.getAttribute("attributeKey");
результат session.getAttribute(...)
object
, который мог быть чем-либо, но так как Вы "знаете", что это HashMap<String, String>
, Вы просто бросаете, не проверяя его сначала. Таким образом, предупреждение. Чтобы быть педантичными, которым Java хочет, чтобы Вы были в этом случае, необходимо получить результат и проверить, что это - совместимость с instanceof
.
В settings.py я добавил TEMPLATE_STRING_IF_INVALID = "недопустимая строка '% s'" См. http://docs.djangoproject.com/en/dev/ref/templates/api/#invalid-template-variables для получения дополнительной информации.
Оно включает это предупреждение "Многие шаблоны, в том числе на сайте администратора, полагаются на молчание системы шаблонов, когда обнаруживается несуществующая переменная. Если вы присвоите значение, отличное от" для TEMPLATE_STRING_IF_INVALID, у вас возникнут проблемы с отображением этих шаблонов и сайтов. . "
Система шаблонов Django ищет silent_variable_failure
как атрибут любого исключения.
Это означает, что вы должны определить собственное исключение с этим атрибутом, установленным на Ложь
.
Для стандартного исключения ObjectDoesNotExist
, сгенерированного ORM и т. Д., Самым простым решением было бы изменить исходный код Django в вашем окне разработки (django / core / exceptions.py) .
Если бы это было что-то, что вам нужно было изменить в производственной системе, вам нужно было бы 1) определить собственный класс исключений, 2) добавить в модель диспетчер, который вызывается из шаблона (вместо прямого использования методов ORM. ), а затем 3) перехватите DoesNotExist в своем диспетчере и повторно вызовите исключение в своем собственном классе.