我想有条件地清除django.contrib.messages
。这两个问题中讨论的解决方案都不起作用:
Delete all django.contrib.messages
Django: Remove message before they are displayed
有什么建议可以让我清除这些信息吗?我使用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
4条答案
按热度按时间sauutmhj1#
一行程序看起来像这样:
它本质上执行的任务与@Avukonke Peter的解决方案相同。然而,我发现没有必要将消息设置为使用状态(我相信这是默认的,但如果我错了,请随时纠正我)。我不明白为什么没有
messages.clear()
函数。vom3gejh2#
您需要遍历从'get_messages'方法检索的当前消息集的消息。在设置新消息之前,您可以在任何需要清除消息的地方使用此代码,也可以在需要清除所有消息的地方使用此代码。
注:如果不想清除消息,请设置system_messages。使用的标志为“False”,因为消息在存储示例迭代时被标记为清除(在处理响应时被清除)。参考:https://docs.djangoproject.com/en/3.0/ref/contrib/messages
e7arh2l63#
我在Django 3上。2、这里给出的答案没有一个对我有用。不知道为什么可能是因为新版本的一些变化。所以我想出了一个办法。如果您需要删除消息或者不想在某个模板上显示消息,只需迭代消息,而无需在模板文件中执行任何操作。
我在模板中添加了这些行,其中的消息应该被删除。我想现在在视图中这样做是不可能的。我们仍在寻找社区对此的更多见解。
mf98qq944#
这是Django 4中唯一对我有用的东西(除了覆盖模板中的
messages
块之外)。* :这基本上是重新初始化存储(就像消息中间件所做的那样)。