2012-03-20 138 views
12

我有两个看法。如何在Django中使用一次后删除会话密钥?

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

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

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

谢谢。

回答

41

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

del request.session['your key'] 

您可能需要标记的会话修改它来保存,这取决于你的一些设置。

request.session.modified = True 
+2

对不起。我使整个事情变得如此复杂。我只是将它保存到本地var,然后完成。只要删除它。谢谢。我在想太多。 – CppLearner 2012-03-20 04:15:55

+1

如果'del'是与会话直接相关的键,而不是像request.session ['parent_key'] ['child']'嵌套的键,那么不需要设置'request.session.modified = True ' – 2018-01-16 14:04:43

8

您也可以从会话中弹出密钥。您可以将密钥设置为一个变量并同时将其除掉:

key_variable = request.session.pop('your key') 
+0

其中也可以采用默认值,例如'get' – Vassilis 2017-07-13 23:30:41

+0

这是否需要'request.session.modified = True'后续或者否? – 2017-09-07 04:55:28

+0

@HassanBaig不,在这种情况下不需要设置'request.session.modified = True'。 – 2018-01-16 14:03:02