Я пытаюсь написать всеобъемлющую структуру обработки и отображения сообщений для Django.
В результате я хочу обрабатывать для сообщений, которые имеют различные типы объектов. Некоторые, может быть, строка, другие, возможно, словарь.
например, рассмотрим этот тривиальный пример
messages.error(request, form.errors.as_json())
messages.warning(request, "error 2")
messages.info(request, 'error 3')
примером ошибки формы может быть.
add_error('username',ValidationError('User does not exist', code=40))
теперь, если вы l oop через словарь сообщений, вы получите следующий вывод на консоль:
{"username": [{"message": "User does not exist", "code": 40}]}
error 2
error 3
Теперь нам просто нужно l oop через словарь сообщений и отформатировать сообщение для отображения. Для этого я планирую использовать фильтр клиентов.
Проблема в том, что при оценке типа объекта сообщения они все возвращаются в виде строк. Даже мысль, что первое сообщение является словарным объектом. print (type(error.message))
возвращает (для всех сообщений) <class 'str'>
Я подозревал, что словарь возвращается в виде строки. '{"username": [{"message": "User does not exist", "code": 40}]}'
.
Поэтому я устал от использования literal_eval. Ниже приведен полный черновик фильтра шаблона. как всегда!