在Django中,我的request.session没有传递过去...有人知道为什么吗?

5

在一个视图中,我设置:

request.session.set_expiry(999)
request.session['test'] = '123'

在另一个视图中,我执行以下操作:
print request.session['test']

并且它无法被找到。(错误) 很简单,我只有两个视图。 似乎一旦我离开一个视图并回到它...它就消失了!为什么?


1
你读过这个吗?http://docs.djangoproject.com/en/dev/topics/http/sessions/ 试着设置一个测试cookie(以下是说明http://docs.djangoproject.com/en/dev/topics/http/sessions/#session-object-guidelines) - Felix Kling
2个回答

18

这可能与这个有关系吗?在http://code.djangoproject.com/wiki/NewbieMistakes上找到了它。

向会话中的列表添加元素无法保存的问题。

如果您在会话中有一个列表,添加元素操作不会保存到对象中。

解决方案是:先将列表从会话对象中复制出来,向其添加元素,然后再将其复制回去:

sessionlist = request.session['my_list']
sessionlist.append(new_object)
request.session['my_list'] = sessionlist

太神奇了。对我来说真的很奇怪,因为无论我做什么,它只会在列表或字典中保存1或2个项目。最后一个项目会改变,但它不会让我添加超过2个。 - Lauri Elias

1

你有没有在某个地方将会话本身设置为空字典?


这正是我的问题所在。 - Ojonugwa Jude Ochalifu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接