错误设置django的ALLOWED_HOSTS设置不会产生可理解的错误

时间:2014-10-23 12:37:17

标签: python django http debugging

Django的ALLOWED_HOSTS设置,如果设置为与浏览器连接的主机不同,则只会导致400,而不会显示问题。

DEBUG = False
ALLOWED_HOSTS = ['example.com']

如果您通过直接连接到IP而不是通过example.com来点击django,那么您将得到一个简单的400页。

这只发生在DEBUG = FALSE上(如文档所述),但它通过wsgi和manage.py发生。

这比我承认要调试的时间要长得多。

调试输出在哪里可以让我免于这个模糊的错误?不应该至少manage.py的输出给出提示吗?

该页面只显示400 Bad Request,日志为:

1.2.3.4 - - [23/Oct/2014 11:33:22] "GET / HTTP/1.1" 400 26

1 个答案:

答案 0 :(得分:2)

是的,Django错误日志。

[ERROR] [2014-10-23 12:46:06,073] [base 6808 140062533326784] [Invalid HTTP_HOST header: 'whatver.host'.You may need to add u'whatever_host' to ALLOWED_HOSTS.]

这是一个示例日志配置。如果你希望调试任何东西,你应该记录Djanogo错误。

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'error_file': {
            'level': 'ERROR',
            'filename': os.path.join(LOG_PATH, 'error.log'),
            'class':'logging.handlers.RotatingFileHandler',
            'maxBytes': 1 * 1024 * 1024,
            'backupCount': 2
        }
    },
    'loggers': {
        'django': {
            'handlers': ['error_file'],
            'level': 'ERROR',
            'propagate': True
        }
    }
}