2013-05-04 49 views
12

由於某種原因,在模板中執行{{ request.session.session_key }}會給我一個None的值。經過一番搜索,遇到使用request.session._session_id,但使用該模板,所提到給我一個錯誤this postDjango 1.5會話密鑰是無

Variables and attributes may not begin with underscores: 'request.session._session_key'

我在Django會議的理解是,當下一個用戶加載一個頁面(任何頁面),甚至如果他是匿名的,則會將session_id分配給該特定會話。我的理解錯了嗎?還有,using[SESSION_SAVE_EVERY_REQUEST]應該進來嗎?

我使用數據庫後端作爲會話存儲。

回答

30

要回答我的問題:

但仍可以訪問使用{{ request.session.session_key }}會話密鑰。但是,docs提到只有在保存/修改會話時纔會創建會話。

By default, Django only saves to the session database when the session has been modified – that is if any of its dictionary values have been assigned or deleted:

所以在我的情況下,會議沒有被設置,因爲我沒有操縱它。使用SESSION_SAVE_EVERY_REQUEST確實可以解決全球範圍內的問題。在我的使用案例中,我只需要它在一個特定的視圖功能,所以這是一個簡單的事情做到這一點:

if not request.session.get('has_session'): 
    request.session['has_session'] = True 
+0

好聽點兒。 – 2013-05-13 14:23:06

相關問題