繁体   English   中英

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

[英]Import Error : from django.core.handlers.wsgi import STATUS_CODE_TEXT

我是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
  • 休息框架: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的建议,我更加仔细地浏览了回溯,并意识到该引用指向第8行上的根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&评论者发布的链接上找到了

链接到相关票证 杰帕迪拉写道:

总而言之,我们应该应该可以像在response.py中那样:

from django.utils.six.moves.http_client import responses

...

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

我放弃了该建议,该建议在github上是封闭的:

django-rest-framework的票据状态码

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

编辑:根据我收到的另一个问题的答案: “选项”对象没有属性“ get_all_related_objects”,但是我已经在使用Django 1.11 ,事实证明我正在使用旧版本的其余框架以及新版本的django 。 请参阅下面标记的答案

该错误是因为您正在使用的django-rest-framework版本(v3.1.1)不支持Django 1.11版本。 直到3.7版才在django-rest-framework添加了对Django v1.11的支持

使用pip升级django-rest-frameworkpip install -U djangorestframework

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

Django 1.9发行说明中

django.http.responses.REASON_PHRASES和django.core.handlers.wsgi.STATUS_CODE_TEXT已删除。 请改用Python的stdlib:适用于Python 3的http.client.responses和适用于Python 2的httplib.responses。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM