我正在尝试遍历会话变量以打印出所有内容。
for s in request.session:
print str(s)
产生的错误如下
KeyError at /<app name>/searchResults/
0
使用以下追溯。
/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py in get_response
115. response = callback(request, *callback_args, **callback_kwargs)
/<path to django app>/views.py
106. for s in request.session:
/usr/local/lib/python2.7/dist-packages/django/contrib/sessions/backends/base.py in __getitem__
46 return self.__session[key]
知道什么是'0'意味着什么错误?我以前从未见过这种事。
答案 0 :(得分:3)
迭代会话值的正确方法是request.session.itervalues()
- 基本会话类公开与标准字典相同的键/值/项选项。到目前为止,我不确定它获取你的for循环所找到的值,但它不是值。
答案 1 :(得分:0)
你的班级缺少__iter__成员......这就是全部。
您可以将其子类化以修复错误。
e.g。
class IterableRequest(Request):
def __iter__(self): return self.iterkeys()
也许下一次黑客攻击可能会解决问题:
Request.__iter__=Request.iterkeys
另见:
我很想检查来源并确认它是一个错误,然后制作错误报告。