簡體   English   中英

嘗試在Django中遍歷會話字典時的KeyError 0

[英]KeyError 0 when trying to traverse session dictionary in Django

我正在嘗試遍歷會話變量以打印出其所有內容。

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'意味着什么錯誤? 我以前從未見過這種事。

迭代會話值的正確方法是request.session.itervalues() - 基本會話類公開與標准字典相同的鍵/值/項選項。 到目前為止,我不確定它正在獲取你的for循環所找到的值,但它不是值。

你的班級缺少__iter__成員......就是這樣。

您可以將其子類化以修復錯誤。

例如

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

也許這個下一個黑客可能會解決這個問題:

Request.__iter__=Request.iterkeys

也可以看看:

我很想檢查源並確認它是一個bug,然后制作一個bug報告。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM