Подтвердить что ты не робот

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?

4b9b3361

Ответ 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.