[英]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.