我遇到了一個奇怪的問題....我有以下代碼在我的本地開發中工作得非常好,但是當我在項目開發服務器中使用相同的代碼時,出現KeyError :'名字' 要麼我在這裏錯過了一些非常愚蠢的東西,或者我不知道的東西。只發生在一個開發環境中的Keyerror
def register(self,request, **kwargs):
try:
data = self.deserialize(request, request.raw_post_data, format=request.META.get('CONTENT_TYPE', 'application/json'))
print data
print " reached register"
email = data['email']
password = data['password']
firstname = data['firstName']
lastname = data['lastName']
newdata = {'email' : email , 'password1': password , 'password2':password, 'firstname':firstname , 'lastname':lastname }
日誌輸出如下:
[Wed Jul 31 21:42:24 2013] [error] {u'lastName': u'Adams', u'password': u'pass', u'email': u'[email protected]', u'firstName': u'Sam'}
[Wed Jul 31 21:42:24 2013] [error] reached register
[Wed Jul 31 21:42:24 2013] [error] ERROR:root:'firstname'
[Wed Jul 31 21:42:24 2013] [error] Traceback (most recent call last):
[Wed Jul 31 21:42:24 2013] [error] File "/home/ubuntu/djangoEC/userdetails/api.py", line 102, in register
[Wed Jul 31 21:42:24 2013] [error] firstname = data['firstName']
[Wed Jul 31 21:42:24 2013] [error] KeyError: 'firstname'
唷,任何想法?
你有一個沒有'except'的'try'。您粘貼的代碼段無效。 –
什麼是數據?請給我們輸出'type(data)'。如果你的錯誤日誌是正確的,它不是一個普通的'dict'。 – Tadeck
根據在不同系統上運行的Python版本,可能會導致關鍵錯誤,因爲您分配數據['firstName']',可能會將其解釋爲字節字符串(非Unicode),而數據中的密鑰爲實際上是一個unicode字符串'data [u'firstName']'。 如果您運行可能解釋不一致行爲的不同Python版本。 – bossi