如何只清除特定的Flask会话变量?

Sou*_*ers 2 python flask

我已经看到了许多有关清除Flask会话的示例和问题,但是还没有找到有关如何仅清除特定键或一组键的明确答案。

如果我不想清除整个会话,如何才能完全删除(好像它不存在)特定密钥?

例如,我想清除session ['foo'],但保留session ['bar']。所以当我以后做:

if 'foo' in session:
Run Code Online (Sandbox Code Playgroud)

这应该返回False。

CSM*_*ick 5

session.keys()你试图飞出钥匙?

# remove the keyname from the session if it is there
session.pop('key_name')
Run Code Online (Sandbox Code Playgroud)

  • 当您需要知道已删除键的值时,请使用“pop”。否则使用“del”。 (2认同)

Abc*_*Xyz 5

我记得编写的应用程序弹出元素的速度非常快,而且表现得很奇怪(现在不记得这个具体情况),但从那时起我就习惯在任何可以使用的地方使用del。

如果您想从会话中删除密钥(如果存在),您可以使用pop

flask.session.pop('key_name', None)
Run Code Online (Sandbox Code Playgroud)

del它会是:

try:
    del flask.session['key_name']
except KeyError:
    pass
Run Code Online (Sandbox Code Playgroud)

我写这个答案是因为 CSMaveric 的评论,关于避免 del。