每当我发布表单时,都会显示错误消息。但是,根据我将闪存添加到队列的方式,有些消息在我发布到表单后会保留,而有些则不会。我注意到这是由于我向队列添加消息的方式造成的。
完美运行的常规方式:
post_data = request.POST
if 'submit' in post_data:
... function(post_data) ...
if ...:
request.session.flash(u'This is some error message')
request.session.flash(u'Maybe some other error message')
在 mako 文件中:
<html>...<body>...
% for m in request.session.pop_flash():
<div class="alert-message">
<p>${m}</p>
</div>
% endfor
...</body></html>
但是,我希望某些消息的工作方式是:
if 'submit' in post_data:
messages = function(...) # output is always a list
for m in messages:
request.session.flash(m)
当我这样做时,每次我重新发布到同一个表单时,所有以前的消息都会再次添加到 .flash() 中。因此,错误消息不断堆积。我该如何解决这个问题或解决这个问题?
最佳答案
我找到了问题所在,但不知道为什么会发生。之前,我将 message
作为关键字发起:
@classmethod
def validate(cls, message=[], **kwargs):
if this:
message.append(u'...')
return kwargs, message
我相信在每次发布后,消息
都没有清除,即使我从未使用它调用validate()
。但是,当我删除 messsage
作为关键字时,它工作正常:
@classmethod
def validate(cls, **kwargs):
message = []
...
有谁知道为什么会这样吗?
关于python - request.session.flash() 和 .pop_flash(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8723340/