Rest框架:TypeError:' exceptions.KeyError'对象在无效令牌上无法调用

时间:2016-01-29 08:34:02

标签: python django django-rest-framework

我正在为我的api使用rest框架的令牌认证。最近我发现了一个问题,如果请求中提供的令牌无效,而不是返回Invalid Token响应,则django会抛出TypeError at /api/users/: 'exceptions.KeyError' object is not callable

我检查了跟踪,发现了这个: 在django / db / models / query.py(Django version = 1.7)文件行号357,内部引发DoesNotExists异常调用中,由TypeError引发的实际异常self.model._meta.object_name

    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吗?

1 个答案:

答案 0 :(得分:0)

奇怪的是,当我的代码中有这一行时,我得到了这个:

except KeyError, models.MyModel.DoesNotExist:

其中逗号被解释为" as",重新定义models.MyModel.DoesNotExist为KeyError并导致" exception.KeyError不可调用"在创建一个时。

我打算做的是:

except (KeyError, models.MyModel.DoesNotExist):