Django messages - проверьте, существует ли уже сообщение перед добавлением
Можно ли проверить, существуют ли сообщение и содержимое django перед добавлением другого сообщения?
В моем примере я выполняю try
- except
в цикле, и если возникает исключение, я добавляю сообщение, но я хочу, чтобы сообщение появлялось только один раз, а не для каждого элемента в цикле:
for i in data:
# do something...
try:
# try to act upon something
except:
# failed action add a message
if not messages.?.contains("Error: Unable to perform action X")
messages.add_message(request, messages.ERROR, 'Error: Unable to perform action X')
pass
1 ответ
Решение
Ты ищешь messages.get_messages(request)
метод.
Чтобы получить список всех сообщений, оберните вызов этого метода в list
конструктор:
all_messages = list(messages.get_messages(request))
Каждый объект сообщения имеет информацию о своем уровне, самом сообщении и т. Д. Вы можете использовать эти поля, чтобы проверить, существует ли уже искомое сообщение.
Простой фрагмент:
all_error_messages_content = [msg.message for msg in list(messages.get_messages(request)) if msg.level_tag == 'error']
if 'Error: Unable to perform action X' not in all_error_messages_content:
messages.add_message(request, messages.ERROR, 'Error: Unable to perform action X')