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

Как мне получить dzhango runningerver, чтобы показать мне DeprecationWarnings и другие полезные сообщения?

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

В настоящее время я называю это следующим образом:

python manage.py runserver --verbosity 2
4b9b3361

Ответ 1

Команда runerver игнорирует параметр verbosity: https://code.djangoproject.com/ticket/15132

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

Например:

import logging
logger = logging.getLogger('django')   # Django 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)

Ответ 3

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

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

на ваш url.py верхнего уровня.

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