Pyramid的session.pop_flash()返回一个列表,其中包含已添加到闪存队列中的所有元素(不确定是否存在实际限制,但我还没有看到)。我相信这是直接基于php的闪存队列。
如何直接修改闪存队列?比如说,其中有3个元素,我希望删除其中一个(并确切知道哪一个)?
目前我这样做: -
q = request.session.pop_flash()
q.pop(index_that_I_want_removed)
for element in q:
request.session.flash(q)
简单,但似乎是hackish。有更优雅的解决方案吗?
答案 0 :(得分:0)
flash
消息被设计为不透明队列。这意味着先进先出。如果您知道正在使用的特定队列的实现细节,则只能直接修改其中的消息。例如,在Pyramid的SignedCookieSessionFactory
中,队列存储在会话中的特定键中,您可以覆盖它。但是,没有适用于任意ISession实现的通用解决方案。
<强>更新强>
好的......我想在审阅文档后我需要撤消我的答案。如果您想忽略特定的Flash消息,那么您需要以您已经完成的方式执行此操作。 @ oluwafemi-sule的答案不准确,因为它专注于会话密钥/值而不是会话中存储的闪存队列。 pop_flash
会返回一个列表,您可以根据需要进行迭代。