导入错误:来自django.core.handlers.wsgi导入STATUS_CODE_TEXT

时间:2017-10-18 21:44:32

标签: python django django-rest-framework

我是django和python的新手,我在将django rest框架集成到我的项目中时遇到了麻烦。

我已经按顺序获得了我的模型,序列化程序和api,但是当我尝试运行服务器时,我遇到了一系列错误:

(pyDev)C:\ Users \ pyDev \ smrt> python manage.py运行服务器 执行系统检查......

    Unhandled exception in thread started by <function wrapper at 0x0000000003FFD278
    >
    Traceback (most recent call last):
...
      File "C:\Python27\Lib\site-packages\rest_framework\generics.py", line 8, in <m
    odule>
        from rest_framework import views, mixins
      File "C:\Python27\Lib\site-packages\rest_framework\views.py", line 14, in <mod
    ule>
        from rest_framework.response import Response
      File "C:\Python27\Lib\site-packages\rest_framework\response.py", line 8, in <m
    odule>
        from django.core.handlers.wsgi import STATUS_CODE_TEXT
    ImportError: cannot import name STATUS_CODE_TEXT

任何人都知道如何解决这个问题或者我做错了什么?谢谢!

  • python:2.7.14
  • django:1.11.6
  • rest framework:3.1.1
  • virtualenv:12.1.1

wpercy正确地指出已从django中删除了STATUS_CODE_TEXT,但我没有在我的代码中的任何地方显式调用它。我想这意味着它在rest_framework.generics代码的某个地方?

我是否有可能错误地使用rest_framework并需要更新我的方法?

编辑:我在django rest框架教程之后从头开始构建了一个全新的项目,我能够很好地返回JSON对象而没有这里描述的错误......

编辑:这似乎是调用包括:

的结果
rest_framework.generics import ListAPIView

编辑: 根据wpercy的建议,我仔细查看了追溯,并意识到引用指向我的根python27 \ Lib \ site-packages \ rest_framework \ response.py,如上所示,我发现:

from django.core.handlers.wsgi import STATUS_CODE_TEXT

然后在第81行:

return STATUS_CODE_TEXT.get(self.status_code, '')

我该如何解决这个问题?

编辑: 我在链接上找到了wpercy&amp;发表于下面的评论者

Link to relevant ticket。 Jpadilla写道:

总之,我们应该可以做一些像response.py:

这样的事情
from django.utils.six.moves.http_client import responses

...

return responses.get(self.status_code, '')

我放弃了这个建议,这是github上的一个封闭项目:

ticket for django-rest-framework Status code

,服务器现在将运行。我不确定我是如何得到这个旧代码的?也许我应该卸载并重新安装django-rest-framework以确保我拥有最新的,但删除此代码确实解决了这个问题。

编辑: 基于我从另一个问题得到的答案:'Options' object has no attribute 'get_all_related_objects' but I'm already using Django 1.11 事实证明,我使用旧版本的休息框架和新版本的django。见见下面的答案

2 个答案:

答案 0 :(得分:1)

此错误是因为您使用的=COUNTIFS(A:A,"<>",A:A,"<>x") 版本(v3.1.1)不支持Django 1.11版。 Support for Django v1.11 was not added in django-rest-framework until version 3.7

使用pip升级django-rest-frameworkdjango-rest-framework

答案 1 :(得分:0)

在Django 1.9中删除了

django.core.handlers.wsgi.STATUS_CODE_TEXT

来自Django 1.9 release notes

  

django.http.responses.REASON_PHRASES和django.core.handlers.wsgi.STATUS_CODE_TEXT已被删除。使用Python的stdlib代替:Python 3的http.client.responses和Python 2的httplib.responses。