Python Django中详细的弃用警告

Python Django中详细的弃用警告,python,django,warnings,django-1.5,deprecation-warning,Python,Django,Warnings,Django 1.5,Deprecation Warning,从django 1.3升级到django 1.5后,我开始在测试运行期间看到这些弃用警告: 路径为virtualenv/lib/python2.6/site packages/django/http/request.py:193: 弃用警告:HttpRequest.raw_post_数据已弃用。使用 改为HttpRequest.body 我在项目内部搜索了raw\u post\u数据,但什么也没找到。因此,它没有直接用于项目中。然后,我手动检查了已安装的应用程序,发现raven模块仍然使用原始发

从django 1.3升级到django 1.5后,我开始在测试运行期间看到这些
弃用警告

路径为virtualenv/lib/python2.6/site packages/django/http/request.py:193: 弃用警告:HttpRequest.raw_post_数据已弃用。使用 改为HttpRequest.body

我在项目内部搜索了
raw\u post\u数据
,但什么也没找到。因此,它没有直接用于项目中。然后,我手动检查了
已安装的应用程序
,发现
raven
模块仍然使用
原始发布数据
,这是原因,但是

在测试运行期间,是否可能看到
弃用警告的原因?如何使这些警告更详细?

这是取自

您可以使用警告模块为
DeprecationWarning
引发错误

将以下代码段临时添加到项目的
url.py
顶部:

import warnings
warnings.simplefilter('error', DeprecationWarning)
弃用警告现在将引发错误,因此,如果
debug=True
您将获得熟悉的黄色Django错误页面,其中包含完整的回溯功能。

您可以通过命令行选项
-W
来设置异常,并在上进行回溯弃用警告类似于错误,而不是正常的简单警告一次。任何特定警告都可以按消息、类别、模块、行或它们的组合进行过滤

示例:

python -W error:"raw_post_data has been deprecated" manage.py test

python -W error::DeprecationWarning manage.py test

python -W error:::django.http.request manage.py test
如果要通过批量编辑大型项目的多个文件来修复同一类型的所有警告,则精细筛选非常有用



Python2.7及更高版本通常在不启用弃用警告时忽略它们,例如通过
-Wd
选项或环境变量
导出PYTHONWARNINGS=“d”
。这在开发机器上很有用,但在生产机器上却没有用。

您能说明您是如何提出请求的吗?必须有东西访问
raw\u post\u data
属性,即使它不应该访问。它只是
self.client.get(url,params)
。我很确定这是不相关的,因为我在很多测试方法中都会提出这样的请求,但只有这一个会导致出现警告。我猜这是因为在
libs
中导入了导致警告的内容。无论如何,谢谢你。我明白了。您是否在
libs
中导入任何与Django或请求/视图相关的内容?在Django 1.5中,
raw\u post\u data
属性未被访问,但是可以通过迭代所有属性来分析请求。也许是模拟的
?或者是
libs
中的某个内容?在
libs
中有大量导入,但与请求/视图无关,只是有来自django.conf导入设置的
。还有..这是:乌鸦是原因-手动解决。谢谢,但我还是想知道,在测试运行期间,我是否能找到原因。我会更新这个问题,我想你不能。可以访问
raw\u post\u data
属性,但当引发
DeprecationWarning
时,您将不知道是谁访问了该属性。因此,没有可以使其更详细的标志。是的,我看到了这一点,但不幸的是,它不起作用-当我将其添加到
url.py
settings.py
时,我在测试运行期间根本看不到警告。我会努力找出原因,如果答案有效,我会接受。感谢您的参与。找到它,问题出在
raven
本身。它在访问
raw\u post\u数据时吃掉了所有类型的异常
——这就是为什么我在同一个地方看到了警告,而没有看到异常(请参阅)。所以,只要解决方案可行。谢谢大家!@SunnySydeUp,决定接受你的答案,但为了奖励hynekcer他令人敬畏的替代解决方案,他给了一个悬赏奖。希望这对你也公平。