2016-01-29 51 views
1

我使用REST框架的令牌认证为我的API调用。最近,我发现一个问题,如果在请求中提供的令牌是无效的,而不是返回Invalid Token响应,Django的抛出TypeError at /api/users/: 'exceptions.KeyError' object is not callableREST框架:类型错误:“exceptions.KeyError”对象不是无效令牌

我检查了跟踪,发现这一点: 在Django/DB /模型/ query.py(Django的版本= 1.7)文件号线357,内部提升DoesNotExists异常调用,通过self.model._meta.object_name引发实际的异常TypeError

if num == 1: 
     return clone._result_cache[0] 
    if not num: 
     raise self.model.DoesNotExist(
      "%s matching query does not exist." % 
      self.model._meta.object_name) 

有谁知道为什么模型的OBJECT_NAME成为exception.KeyError而非Token

回答

0

奇怪的是,我得到这个,当我有这个线在我的代码:

except KeyError, models.MyModel.DoesNotExist: 

在逗号被解释为“是”,重新定义models.MyModel.DoesNotExist作为KeyError异常,造成“exception.KeyError不可调用“时创建一个。

我的意思做的是:

except (KeyError, models.MyModel.DoesNotExist): 
相关问题