0

是否可以在添加另一条消息之前检查 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
4

1 回答 1

5

你正在寻找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')
于 2018-08-31T11:55:55.123 回答