2017-08-30 7 views
0

Pyramidのsession.pop_flash()は、フラッシュキューに追加されたすべての要素を含むリストを返します(実際の制限があるかどうかはわかりませんが、私はこれがphpのフラッシュキューに直接基づいていると信じています。pyramid - セッションのフラッシュを変更する

フラッシュキューを直接変更するにはどうすればよいですか?たとえば、その中に3つの要素があり、そのうちの1つを削除したい(そして、どれが正確にわかるか)とします。

現在、私はそれをこのようにやっている: -

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

シンプルに、しかしハックようです。より洗練されたソリューションはありますか?

答えて

0

flashメッセージは、不透明キューとして設計されています。これは先入れ先出しを意味します。使用されている特定のキューの実装の詳細が分かっている場合は、その内部のメッセージのみを直接変更できます。たとえば、PyramidのSignedCookieSessionFactoryでは、キューはセッションの特定のキーに格納されており、そのキューを上書きすることができます。しかし、任意のISessionの実装には一般的な解決策はありません。

更新

[OK]を...私はドキュメントで確認した後、私の答えを撤回する必要があると思います。あなたが特定のフラッシュメッセージを無視したい場合、あなたはすでにそれをやっている方法でそれを行う必要があります。 @ oluwafemi-suleの答えは、セッションに格納されているフラッシュキューの代わりにセッションキー/値に焦点を合わせているため、正確ではありません。 pop_flashは、あなたが望むのに反復できるリストを返します。

+0

これは@ oluwafemi-suleによる回答と矛盾するようです。私は(例えば)request.session.pop_one_flash()または同様の概念的な機能を持つことができればFIFOは問題ありません。 –

+0

私は自分の答えを更新します - それは間違っています - 私はここでメモリから答えてはならないはずです。 –

+0

更新いただきありがとうございます。ええ、私はそれがフラッシュを参照していないので、他の答えは意味がないと思った。私はそれをやっているよりも他の選択肢がないように思えます.... –

関連する問題