【问题标题】:pyramid - modify the session flash金字塔 - 修改会话闪存
【发布时间】:2018-02-07 23:05:10
【问题描述】:

Pyramid 的 session.pop_flash() 返回一个列表,其中包含已添加到 flash 队列中的所有元素(不确定是否有实际限制,但我还没有看到)。我相信这是直接基于php的flash queue。

如何直接修改闪存队列?例如,假设其中有 3 个元素,我希望删除其中一个(并确切知道是哪一个)?

目前我正在这样做:-

q = request.session.pop_flash()
q.pop(index_that_I_want_removed)
for element in q:
    request.session.flash(q)

简单,但看起来很老套。有没有更优雅的解决方案?

【问题讨论】:

    标签: python session pyramid


    【解决方案1】:

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

    更新

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

    【讨论】:

    • 这似乎与@oluwafemi-sule 的答案相矛盾。如果我可以(例如)有一个 request.session.pop_one_flash() 或类似的概念函数,那么 FIFO 很好。
    • 我会更新我的答案 - 不正确 - 我不应该在这里凭记忆回答。
    • 感谢您的更新。是的,我认为另一个答案没有意义,因为它没有引用闪光灯。似乎除了我一直在做的方式之外别无选择......
    猜你喜欢
    • 1970-01-01
    • 2020-11-21
    • 2013-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-27
    • 1970-01-01
    • 2011-01-11
    相关资源
    最近更新 更多