可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I've upgraded to Django 1.4 and now when I run my development server I get the following warning:
/home/flc/venvs/myprj/lib/python2.6/site-packages/django/views/generic/simple.py:8:
DeprecationWarning: Function-based generic views have been deprecated; use class-based views instead. DeprecationWarning
I have tracked down most of the causes of this and fixed them by making the following changes:
django.views.generic.simple.direct_to_template => django.views.generic.base.TemplateView django.views.generic.simple.redirect_to => django.views.generic.base.RedirectView
etc
However, I'm still getting the warning and can't figure out what I've missed. How do I get the actual module and line in my code that is causing the DeprecationWarning?
回答1:
You can use the warnings module to raise an error for DeprecationWarning
.
Temporarily add the following snippet to the top of your project's urls.py
:
import warnings warnings.simplefilter('error', DeprecationWarning)
The DeprecationWarning
will now raise an error, so if debug=True
you'll get the familiar yellow Django error page with the full traceback.
Once you've tracked down the source of the deprecation warnings, remember to remove the snippet! Note that it may be a third party app that is causing the deprecation warnings, not your own code.
If you're new to the warnings module, you might find the page on Python module of the week to be an easier introduction than the Python docs.
回答2:
You can also do this on the command line so you don't need to modify your code. For example:
python -We manage.py runserver --traceback
The official doc is here. You can use abbreviations and the e
in -We
stands for convert warnings to error
.