从django 1.3升级到django 1.5后,我在测试运行期间开始看到这些DeprecationWarnings
:
path_to_virtualenv / LIB / python2.6的/站点包/ django的/ HTTP / request.py:193: DeprecationWarning:HttpRequest.raw_post_data已被弃用。使用 相反,HttpRequest.body。
我在项目内搜索了raw_post_data
但没有发现任何内容。所以它没有直接用在项目中。然后,我手动浏览INSTALLED_APPS
,发现raven
模块仍然使用raw_post_data
,这是原因,但是..
在测试运行期间是否可以查看DeprecationWarning
的原因?如何使这些警告更加冗长?
答案 0 :(得分:24)
您可以通过命令行选项-W
设置Python warning control以在 DeprecationWarning 上使用追溯引发异常,例如错误而不是正常的简单警告一次。任何特定警告都可以按消息,类别,模块,行或它们的组合进行过滤。
示例:
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
如果您想通过在大项目的许多文件中批量编辑来修复一种类型的所有警告,那么精细过滤非常有用。
Python 2.7 及更高版本通常会忽略DeprecationWarning,如果它们没有被重新安装,例如通过-Wd
选项或环境变量export PYTHONWARNINGS="d"
。这对开发机器很有用,但对生产却没有用。
答案 1 :(得分:5)
您可以使用警告模块引发DeprecationWarning
的错误。
暂时将以下代码段添加到项目urls.py
的顶部:
import warnings
warnings.simplefilter('error', DeprecationWarning)
DeprecationWarning
现在会引发错误,因此如果debug=True
您将获得熟悉的黄色Django错误页面以及完整的回溯。