Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 仅在一个开发环境中发生的Keyerror_Python_Django - Fatal编程技术网

Python 仅在一个开发环境中发生的Keyerror

Python 仅在一个开发环境中发生的Keyerror,python,django,Python,Django,我遇到了一个奇怪的问题。。。。我有以下代码,在我的本地开发中运行得非常好,但是当我在project dev server中使用相同的代码时,我得到一个关键错误:“firstname” 要么是我错过了一些非常愚蠢的东西,要么是我不知道的东西 def register(self,request, **kwargs): try: data = self.deserialize(request, request.raw_post_data, forma

我遇到了一个奇怪的问题。。。。我有以下代码,在我的本地开发中运行得非常好,但是当我在project dev server中使用相同的代码时,我得到一个关键错误:“firstname” 要么是我错过了一些非常愚蠢的东西,要么是我不知道的东西

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'samad@g.com', 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'

唷,有什么想法吗?

您的代码会查找
'firstName'
,但例外情况是
'firstName'
。注意这个例子。要么你的真实代码中写着
'firstname'
(要么你的真实数据中有
'firstname'
,或者其他一些大小写不匹配的错误),要么
数据是一些奇怪的类似dict的对象,在查找时使用小写键。我怀疑这是第一个答案。

由@tdelaney回答。使用数据[u'firstName']解决了问题。

您有一个
尝试
,除了
,没有
。粘贴的代码段无效。什么是
数据
?请提供
类型(数据)
的输出。如果错误日志正确,则它不是普通的
dict
。根据不同系统上运行的Python版本,可能会导致键错误,因为您分配了
数据['firstName']
,这可能会被解释为字节字符串(非unicode),而数据中的键实际上是unicode字符串
数据[u'firstName']
。如果您运行不同的Python版本,这可能会解释不一致的行为。这可能是非英语机器上的一些奇怪的解码错误。您真的应该使用u'firstName'以便匹配dict键。@tdelaney:这就解决了问题。奇怪的是,在本地环境中没有出现这种情况,但unicode在这里是有意义的。