1

我正在尝试遍历会话变量以打印出其所有内容。

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”是什么意思吗?我以前从未见过这种东西。

4

2 回答 2

3

迭代会话值的正确方法是request.session.itervalues()- 基会话类公开与标准字典相同的键/值/项选项。到目前为止,我不确定它在哪里获取你的 for 循环正在找到的值,但它不是值。

于 2013-07-11T21:02:25.463 回答
0

您的班级缺少 __iter__ 成员……仅此而已。

您可能可以将其子类化以修复错误。

例如

class IterableRequest(Request):
  def __iter__(self): return self.iterkeys()

也许下一个黑客可能会解决这个问题:

Request.__iter__=Request.iterkeys

也可以看看:

我很想检查源代码并确认它是一个错误,然后制作一个错误报告。

于 2014-10-19T05:50:57.313 回答