2012-03-20 136 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