как мне заставить сервер запуска django показать мне DeprecationWarnings и другие полезные сообщения? - PullRequest
18 голосов
/ 16 июля 2011

Я недавно обновил мою установку django с 1.2 до 1.3. В моей системе разработчиков я не получил никаких предупреждений об устаревших вызовах. Но как только я переместил код на свой рабочий сервер apache, я увидел много сообщений «DeprecationWarning» в моих журналах apache. Так как мне также вызвать runserver к этим сообщениям?

В настоящее время я называю это так:

python manage.py runserver --verbosity 2

Ответы [ 3 ]

27 голосов
/ 27 января 2012

Python 2.7 отключает отображение предупреждения об устаревании по умолчанию

Для повторного включения установите для переменной среды PYTHONWARNINGS значение "d":

export PYTHONWARNINGS="d"; ./manage.py runserver
3 голосов
/ 15 марта 2013

Чтобы ваш сервер разработки и ваши тесты не прошли для предупреждений DeprecationWarnings, чтобы найти и исправить их, вы можете преобразовать их в ошибки, добавив

if settings.DEBUG:
    import warnings
    warnings.simplefilter('error', DeprecationWarning)
# these are less urgent but could also be enabled
#   warnings.simplefilter('error', PendingDeprecationWarning)

на ваш верхний уровень urls.py.

Я предпочитаю этот подход, потому что он не проходит тестирование и позволяет автоматически находить устаревший код один за другим.

0 голосов
/ 16 июля 2011

Команда runserver игнорирует параметр многословия: https://code.djangoproject.com/ticket/15132

Я бы порекомендовал установить регистратор и направить вывод в stderr: https://docs.djangoproject.com/en/1.3/topics/logging/

Например:

import logging
logger = logging.getLogger('django')   # Django's catch-all logger
hdlr = logging.StreamHandler()   # Logs to stderr by default
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
hdlr.setFormatter(formatter)
logger.addHandler(hdlr) 
logger.setLevel(logging.WARNING)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...