簡體   English   中英

Django:使用基於Cookie的會話存儲時,會話緩存未更新

[英]Django: Session Cache not updated when using Cookie Based Session Storage

我正在嘗試使用Django會話來緩存一些數據。 我的Web應用程序中沒有數據庫,因此我正在使用基於cookie的存儲機制。 我僅能夠第一次成功將數據保存在會話中。 從今以后,如果我嘗試更新會話緩存,它將不起作用。 這是我發現的:

prior_states = request.session.get(workflow_id, [])
print "prior_state >>> ", prior_states
if state_id in prior_states:
    request.session.update({workflow_id: prior_states[:prior_states.index(state_id) + 1]})
else:
     prior_states.append(state_id)
     request.session.update({workflow_id : prior_states})

測試代碼

#1st request:
print request.session.get(1) --> None
request.session[1] = [101] --> works
print request.session.get(1) --> [101]
#2nd request:
print request.session.get(1) --> [101]
request.session[1] = [101, 102] --> works
print request.session.get(1) --> [101,102]

#3rd request:
print request.session.get(1) --> [101] --> Can't follow why?

提前致謝!

根據Django文檔:

https://docs.djangoproject.com/en/1.6/topics/http/sessions/#when-sessions-are-saved

默認情況下,Django僅在修改會話后(即是否已分配或刪除其任何字典值)將其保存到會話數據庫

request.session.modified = True

要更改此默認行為,請將SESSION_SAVE_EVERY_REQUEST設置設置為True。 設置為True時,Django將在每次單個請求時將會話保存到數據庫。

請注意,僅在創建或修改會話后才發送會話cookie。 如果SESSION_SAVE_EVERY_REQUEST為True,則將在每個請求上發送會話cookie。

同樣,每次發送會話cookie時,會話cookie的過期部分都會更新。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM