导入错误:从django.core.handlers.wsgi导入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:Python27Libsite-packagesrest_frameworkgenerics.py", line 8, in <m
odule>
from rest_framework import views, mixins
File "C:Python27Libsite-packagesrest_frameworkviews.py", line 14, in <mod
ule>
from rest_framework.response import Response
File "C:Python27Libsite-packagesrest_frameworkresponse.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
  • 虚拟:12.1.1

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

有没有可能我使用rest_framework不正确,需要更新我的方法?

编辑:我按照django-rest框架教程从头开始构建了一个全新的项目,我能够很好地返回JSON对象,而不会出现这里描述的错误。。。

编辑:这似乎是一个调用的结果,包括:

rest_framework.generics import ListAPIView

编辑:根据wpercy的建议,我更仔细地查看了回溯,并意识到引用指向了我的根python27\Lib\site packages\rest_framework\response.py,如上文所示,位于第8行,我发现:

from django.core.handlers.wsgi import STATUS_CODE_TEXT

然后在第81行:

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

我该怎么解决这个问题?

编辑:我在链接上发现wpercy&下面的评论发布

链接到相关票证。Jpadilla写道:

总之,我们应该能够做一些类似于response.py:的事情

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

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

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

django rest框架的票证状态代码

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

编辑:根据我从另一个问题中得到的答案:"Options"对象没有属性"get_all_related_objects",但我已经在使用Django 1.11事实证明,我使用的是旧版本的rest框架和新版本的django。参见下方标记的答案

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

使用pip:pip install -U djangorestframework升级django-rest-framework

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

来自Django 1.9发布说明:

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

最新更新