2016-09-21 143 views
0

從我理解的here session_key是會話對象的主鍵。request.session.session_key儘管SESSION_SAVE_EVERY_REQUEST(Django 1.10.1)沒有設置

當我檢查request.session時,我找到一個會話對象,但它的主鍵沒有設置。它似乎未得救。所以現在我通過在每個視圖中檢查是否存在request.session.session_key來解決這個問題,如果不存在,調用save()。

有沒有人有解釋爲什麼我只能看到未保存的會話對象?

回答

2

如果你的會話的設置是否正確,可能有兩件事情正在進行:

  • 會話被保存在請求年底。即使會話非空,在響應中間件運行之前它也不會有主鍵。下一個請求中的會話將有一個主鍵。

  • 空會話總是被刪除。如果您的會話不包含任何數據,則會話和cookie將被清除,並且下一個請求將具有空主會話的空會話。

這些都是會話正常工作時的有效場景。即使使用SESSION_SAVE_EVERY_REQUEST,空會話仍然被清除。

如果由於某種原因未設置會話cookie,或者它無效(因爲它已被篡改),會話密鑰也將被設置爲None

+0

好的,所以空的會話也會被刪除。這可能是,我認爲保存每個請求字面意思是每個請求。謝謝! –

相關問題