Django:追踪DeprecationWarning的原因

时间:2012-09-04 15:31:06

标签: django warnings deprecated

我已升级到Django 1.4,现在当我运行我的开发服务器时,我收到以下警告:

/home/flc/venvs/myprj/lib/python2.6/site-packages/django/views/generic/simple.py:8:
     

弃用警告:不推荐使用基于函数的通用视图;   改为使用基于类的视图。         DeprecationWarning

我已经找到了大部分原因,并通过进行以下更改来修复它们:

django.views.generic.simple.direct_to_template => django.views.generic.base.TemplateView django.views.generic.simple.redirect_to => django.views.generic.base.RedirectView

然而,我仍然收到警告,无法弄清楚我错过了什么。如何获取导致DeprecationWarning的代码中的实际模块和行?

2 个答案:

答案 0 :(得分:23)

您可以使用warnings模块引发DeprecationWarning的错误。

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

import warnings
warnings.simplefilter('error', DeprecationWarning)

DeprecationWarning现在会引发错误,因此如果debug=True您将获得熟悉的黄色Django错误页面以及完整的回溯。

一旦您追踪了弃用警告的来源,请记得删除该代码段!请注意,它可能是导致弃用警告的第三方应用,而不是您自己的代码。

如果您是警告模块的新手,您可能会发现page on Python module of the week比Python文档更容易介绍。

答案 1 :(得分:10)

您也可以在命令行中执行此操作,这样您就不需要修改代码。例如:

python -We manage.py runserver --traceback

官方文件是here。您可以使用缩写,e中的-We代表将警告转换为error