我最近将我的django安装从1.2升级到1.3。在我的开发人员系统上,我没有得到任何关于已弃用的调用的警告。但是一旦我将代码移到我的生产apache服务器上,我在apache日志中看到了很多'DeprecationWarning'消息。 那么我如何调用runserver来获取这些消息呢?
目前我称之为:
python manage.py runserver --verbosity 2
答案 0 :(得分:27)
Python 2.7 disables the display of DeprecationWarning by default
要重新启用它,请将环境变量PYTHONWARNINGS设置为“d”:
export PYTHONWARNINGS="d"; ./manage.py runserver
答案 1 :(得分:3)
要让您的开发服务器和您的测试失败为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。
我更喜欢这种方法,因为它在测试中失败了,让我以自动方式逐个找到已弃用的代码。
答案 2 :(得分:0)
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)