金字塔 - 修改会话闪存

时间:2017-08-30 09:38:34

标签: python session pyramid

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。有更优雅的解决方案吗?

1 个答案:

答案 0 :(得分:0)

flash消息被设计为不透明队列。这意味着先进先出。如果您知道正在使用的特定队列的实现细节,则只能直接修改其中的消息。例如,在Pyramid的SignedCookieSessionFactory中,队列存储在会话中的特定键中,您可以覆盖它。但是,没有适用于任意ISession实现的通用解决方案。

<强>更新

好的......我想在审阅文档后我需要撤消我的答案。如果您想忽略特定的Flash消息,那么您需要以您已经完成的方式执行此操作。 @ oluwafemi-sule的答案不准确,因为它专注于会话密钥/值而不是会话中存储的闪存队列。 pop_flash会返回一个列表,您可以根据需要进行迭代。