如何在Django使用一次后删除会话密钥?

Cpp*_*ner 20 django django-views

我有两个观点.

view1通过会话密钥将错误消息传递给view2.

呈现view2后如何删除密钥?我只需要它一次:从view1重定向到view2.刷新我的网页后,我不需要显示该消息.我认为python一旦到达就不会继续执行return

我正在考虑设置一个到期时间戳,但我需要确保它存在至少10-20秒,如果应用程序真的那么长时间加载(我们用Django做一些服务器的东西)?所以时间不那么有希望了.

谢谢.

Col*_*een 51

您可以像任何其他字典一样从会话中删除密钥.

del request.session['your key']
Run Code Online (Sandbox Code Playgroud)

您可能需要将会话标记为已修改,以便保存,具体取决于您的某些设置.

request.session.modified = True
Run Code Online (Sandbox Code Playgroud)

  • 如果你"del"与session直接相关的键,而不是像`request.session ['parent_key'] ['child']`那样嵌套,那么就不需要设置`request.session.modified = True` (3认同)
  • 抱歉.我让整件事变得如此复杂.我只是将它保存到本地var,它就完成了.只需删除它.谢谢.我在想太多. (2认同)

Jon*_*han 15

您也可以从会话中弹出密钥.您可以将键设置为变量并同时删除它:

key_variable = request.session.pop('your key')
Run Code Online (Sandbox Code Playgroud)

  • 此外,在某些情况下最好执行`request.session.pop('key',None)` (3认同)