我是django-1.6的新手.当我运行django服务器时DEBUG = True,它运行得很好.但是,当我改变DEBUG到False在设置文件,然后在服务器停止,并让在命令提示符下以下错误:
CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False.
Run Code Online (Sandbox Code Playgroud)
之后,我改变了ALLOWED_HOSTS到["http://127.0.0.1:8000",],在浏览器中我得到的错误:
Bad Request (400)
Run Code Online (Sandbox Code Playgroud)
没有调试模式可以运行Django吗?
Mar*_*ers 403
该ALLOWED_HOSTS列表应包含完全限定的主机名,而不是 URL.省略端口和协议.如果您正在使用127.0.0.1,我也会添加localhost到列表中:
ALLOWED_HOSTS = ['127.0.0.1', 'localhost']
Run Code Online (Sandbox Code Playgroud)
您还可以使用*以匹配任何主机:
ALLOWED_HOSTS = ['*']
Run Code Online (Sandbox Code Playgroud)
引用文档:
此列表中的值可以是完全限定名称(例如
'www.example.com'),在这种情况下,它们将与请求的Host标头完全匹配(不区分大小写,不包括端口).用了一段开头的值可以用作一个子域通配符:'.example.com'将匹配example.com,www.example.com以及任何其他子域example.com.值'*'将匹配任何东西; 在这种情况下,您有责任提供自己的Host标头验证(可能在中间件中;如果是这样,则必须首先列出此中间件MIDDLEWARE_CLASSES).
大胆强调我的.
您获得的状态400响应是由于当主机标头与该列表中的任何值不匹配时引发SuspiciousOperation异常.
对我来说,由于未设置USE_X_FORWARDED_HOST为 true ,我收到了此错误。从文档:
仅当使用设置此标头的代理时才应启用此功能。
我的托管服务在他们的文档中明确写道必须使用此设置,如果我忘记了,我会收到此 400 错误。
我遇到了同样的问题,但没有一个答案解决了我的问题,为了解决这种情况,最好通过将以下配置添加到settings.py临时来启用日志记录
LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'file': { 'level': 'DEBUG', 'class': 'logging.FileHandler', 'filename': '/tmp/debug.log', }, }, 'loggers': { 'django': { 'handlers': ['file'], 'level': 'DEBUG', 'propagate': True, }, }, }
Run Code Online (Sandbox Code Playgroud)
并尝试tail -f /tmp/debug.log。当你看到你的问题时,你可以比盲目调试更容易处理。
我的问题即将
无效的 HTTP_HOST 标头:“pt_web:8000”。根据 RFC 1034/1035,提供的域名无效。
并通过添加proxy_set_header Host $host;到 Nginx 配置文件并USE_X_FORWARDED_PORT = True在settings.py( 这是因为在我的情况下我已经在 Nginx 上监听了端口上的请求8080并将其传递给guni上端口来解决它8000
| 归档时间: |
|
| 查看次数: |
98599 次 |
| 最近记录: |