Django:追踪DeprecationWarning的原因

Fun*_*der 22 django warnings deprecated

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

/home/flc/venvs/myprj/lib/python2.6/site-packages/django/views/generic/simple.py:8:
Run Code Online (Sandbox Code Playgroud)

DeprecationWarning:已弃用基于函数的通用视图; 改为使用基于类的视图.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的代码中的实际模块和行?

Ala*_*air 23

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

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

import warnings
warnings.simplefilter('error', DeprecationWarning)
Run Code Online (Sandbox Code Playgroud)

DeprecationWarning现在将引发一个错误,所以如果debug=True你有完整的追溯获得熟悉的黄色Django的错误页面.

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

如果您是警告模块的新手,您可能会发现本周Python模块上页面比Python文档更容易介绍.


use*_*130 10

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

python -We manage.py runserver --traceback
Run Code Online (Sandbox Code Playgroud)

官方文件就在这里.您可以使用缩写和 ein in -We来将警告转换为error.