导入错误:从django.core.handlers.wsgi导入STATUS_CODE_TEXT

问题描述:

我是超级新的django和python,我无法将django rest框架集成到我的项目中。导入错误:从django.core.handlers.wsgi导入STATUS_CODE_TEXT

我有我的模型,串行和API才能,我想,但是当我尝试运行的服务器我得到的错误的字符串:

(PyDev的)C:\用户\ Pydev的\ SMRT >蟒蛇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 

任何人对如何解决这一问题还是什么,我做错了的想法?谢谢!

  • 蟒蛇:2.7.14
  • Django的:1.11.6
  • REST框架:3.1.1
  • 的virtualenv:12.1.1

wpercy正确地指出,STATUS_CODE_TEXT一直从Django中删除,但我没有明确地从我的代码中的任何地方调用它。我想这意味着它在rest_framework.generics代码中的某处?

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

编辑:我建从无到有以下Django的REST框架教程一个全新的项目,我能够返回JSON对象,而不这里所描述的错误就好了......

编辑:这是专门似乎是呼叫的结果包括:

rest_framework.generics import ListAPIView 

编辑: 基于wpercy的建议我通过追溯显得更加谨慎,意识到参考在我的根python27 \ LIB \站点包指向\ rest_framework \响应如上所示,第8行.py发现:

from django.core.handlers.wsgi import STATUS_CODE_TEXT 

再上线81:

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

我该如何解决这个问题?

编辑: 我认为wpercy &评议贴在下面

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 事实证明,我是用旧版本的REST框架的使用Django的新版本。请参阅下面标记的答案

+0

(https://github.com/encode/django-rest-framework/issues/2763) – user2357112

+0

我看到现在,但我没有在我的代码中的任何地方使用wsgi.STATUS_CODE_TEXT(故意)...我可以在哪里查找对它的引用? –

此错误是因为django-rest-framework版本你使用(V3.1.1)不支持Django的1.11版本。 Support for Django v1.11 was not added in django-rest-framework until version 3.7

升级django-rest-framework使用PIP:[不存在任何更多] pip install -U djangorestframework

+0

再次感谢@anupsabraham!这让我疯狂! –

+0

很酷。很高兴我能够提供帮助。 :) – anupsabraham

django.core.handlers.wsgi.STATUS_CODE_TEXT已在Django 1.9中删除。

Django 1.9 release notes

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

+0

非常感谢!我再次对这个框架非常陌生。我如何去使用stdlib而不是wsgi?我只是修改settings.py指向httplib.responses? –

+0

我没有在我的代码中明确地调用django.core.handlers.wsgi.STATUS_CODE_TEXT,我如何在项目中找到对它的引用?或者我不在正确的轨道上? –

+0

@SumGuy traceback会告诉你哪个文件是import语句。请发布整个traceback。 – wpercy