我要有条件地清除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
一个单线看起来像这样:
list(messages.get_messages(request))
Run Code Online (Sandbox Code Playgroud)
它基本上执行与@Avukonke Peter 的解决方案相同的任务。但是,我认为没有必要按照使用的方式设置消息(我相信这是默认设置的,但如果我错了,请随时纠正我)。我无法理解为什么没有messages.clear()功能。
| 归档时间: |
|
| 查看次数: |
4471 次 |
| 最近记录: |