Django gives Bad Request (400) when DEBUG = False
I am new to django-1.6. When I run the django server with
DEBUG = True, it's running perfectly. But when I change
False in the settings file, then the server stopped and it gives the following error on the command prompt:
CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False.
After I changed
["http://127.0.0.1:8000",], in the browser I get the error:
Bad Request (400)
Is it possible to run Django without debug mode?
ALLOWED_HOSTS list should contain fully qualified host names , not urls. Leave out the port and the protocol. If you are using
127.0.0.1, I would add
localhost to the list too:
ALLOWED_HOSTS = ['127.0.0.1', 'localhost']
You could also use
* to match any host:
ALLOWED_HOSTS = ['*']
Quoting the documentation:
Values in this list can be fully qualified names (e.g.
'www.example.com'), in which case they will be matched against the request’s
Hostheader exactly (case-insensitive, not including port ). A value beginning with a period can be used as a subdomain wildcard:
www.example.com, and any other subdomain of
example.com. A value of
'*'will match anything; in this case you are responsible to provide your own validation of the
Hostheader (perhaps in a middleware; if so this middleware must be listed first in
Bold emphasis mine.
The status 400 response you get is due to a
SuspiciousOperation exception being raised when your host header doesn't match any values in that list.
★ Back to homepage or read more recommendations: