Django: отслеживать причины отказа
Я обновился до 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?
Ответы
Ответ 1
Вы можете использовать модуль warnings, чтобы вызвать ошибку для DeprecationWarning
.
Временно добавьте следующий фрагмент к вершине вашего проекта urls.py
:
import warnings
warnings.simplefilter('error', DeprecationWarning)
Теперь DeprecationWarning
вызывает ошибку, поэтому, если debug=True
вы получите знакомую желтую страницу ошибок Django с полной трассировкой.
Как только вы отследите источник предупреждений об отказе, не забудьте удалить фрагмент! Обратите внимание, что это может быть стороннее приложение, которое вызывает предупреждения об устаревании, а не ваш собственный код.
Если вы новичок в модуле предупреждений, вы можете найти страницу в модуле Python недели, чтобы это было проще, чем Документы Python.
Ответ 2
Вы также можете сделать это в командной строке, поэтому вам не нужно изменять код. Например:
python -We manage.py runserver --traceback
Официальный документ здесь. Вы можете использовать аббревиатуры, а e
в -We
означает преобразование предупреждений в error
.