【发布时间】:2014-07-31 14:32:48
【问题描述】:
我正在尝试使用 Django Session 来缓存一些数据。我的网络应用程序中没有数据库,所以我使用的是基于 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?
提前致谢!
【问题讨论】:
-
prior_states永远不能是None如果在会话中不存在,它将是空列表,因为您在此处设置default [] if Nonerequest.session.get(workflow_id, [])最好将此条件if prior_states is None:更改为if not prior_states: -
你使用的是什么版本的 Django?
-
我使用的是 Django 1.5.1
标签: python django session cookies django-settings