删除/清除 django.contrib.messages

The*_*rer 7 django

我要有条件地清除django.contrib.messages。这两个问题中讨论的解决方案都不起作用:

删除所有 django.contrib.messages
Django:在显示之前删除消息

关于如何清除消息的任何建议?我正在使用 Django 1.10

代码:

messages = get_messages(request)
for msg in messages:
    pass
for msg in messages._loaded:
    del msg
for msg in messages._queued_messages:
    del msg
Run Code Online (Sandbox Code Playgroud)

小智 9

您需要遍历从“get_messages”方法检索到的当前消息集的消息。在设置新消息之前,您可以在任何想要清除消息的地方使用此代码,或者在您想要简单地清除所有消息的地方使用此代码。

system_messages = messages.get_messages(request)
for message in system_messages:
    # This iteration is necessary
    pass
Run Code Online (Sandbox Code Playgroud)

注意:如果您不想清除消息,则将 system_messages.used 标志设置为“False”,因为消息被标记为在迭代存储实例时清除(并在处理响应时清除)。参考:https : //docs.djangoproject.com/en/3.0/ref/contrib/messages


fgb*_*ist 9

一个单线看起来像这样:

list(messages.get_messages(request))
Run Code Online (Sandbox Code Playgroud)

它基本上执行与@Avukonke Peter 的解决方案相同的任务。但是,我认为没有必要按照使用的方式设置消息(我相信这是默认设置的,但如果我错了,请随时纠正我)。我无法理解为什么没有messages.clear()功能。