I am new to django-1.6. When I run the django server with DEBUG = True
, it's running perfectly. But when I change DEBUG
to 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 ALLOWED_HOSTS
to ["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?
Navigate to settings and locate the base.py file Set the allowed hosts to ALLOWED_HOSTS = ['*']
in the settings.py of your project, check line 28, where is the Allows Host
settings.py
ALLOWED_HOSTS = ['IP', 'servidor', ]
you must put the IP and the server you use, level local or web settings.py
ALLOWED_HOSTS = ['127.0.0.1', 'localhost', 'www.ejemplo.com']
or
ALLOWED_HOSTS = ['*']
For me, I got this error by not setting USE_X_FORWARDED_HOST
to true. From the docs:
This should only be enabled if a proxy which sets this header is in use.
My hosting service wrote explicitly in their documentation that this setting must be used, and I get this 400 error if I forget it.
I had to stop the apache server first.
(f.e. sudo systemctl stop httpd.service
/ sudo systemctl disable httpd.service
).
That solved my problem besides editing the 'settings.py
' file
to ALLOWED_HOSTS = ['se.rv.er.ip', 'www.example.com']
Try to run your server with the --insecure just like this:
python manage.py runserver --insecure
With DEBUG = False
in you settings file, you also need ALLOWED_HOST list set up.
Try including ALLOWED_HOST = ['127.0.0.1', 'localhost', 'www.yourdomain.com']
Otherwise you might receive a Bad Request(400) error from django.
For me as I have already xampp on 127.0.0.1 and django on 127.0.1.1 and i kept trying adding hosts
ALLOWED_HOSTS = ['127.0.0.1', 'localhost', 'www.yourdomain.com', '*', '127.0.1.1']
and i got the same error or (400) bad request
so I change the url to 127.0.1.1:(the used port)/project and voila !
you have to check what is your virtual network address, for me as i use bitnami django stack 2.2.3-1 on Linux i can check which port django is using. if you have an error ( 400 bad request ) then i guess django on different virtual network .. good luck
I had the same problem and none of the answers resolved my problem, for resolving the situation like this it's better to enable logging by adding the following config to settings.py
temporary
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, }, }, }
and try to tail -f /tmp/debug.log
.
and when you see your issue you can handle it much easier than blind debugging.
My issue was about to
Invalid HTTP_HOST header: 'pt_web:8000'. The domain name provided is not valid according to RFC 1034/1035.
and resolve it by adding proxy_set_header Host $host;
to Nginx config file and enabling port forwarding by USE_X_FORWARDED_PORT = True
in the settings.py
( it's because in my case I've listened to request in Nginx on port 8080
and pass it to guni
on port 8000
I had the same problem and I fixed it by setting ALLOWED_HOSTS = ['*']
and to solve the problem with the static images you have to change the virtual paths in the environment configuration like this:
Virtual Path
Directory
/static/ /opt/python/current/app/yourpj/static/
/media/ /opt/python/current/app/Nuevo/media/
I hope it helps you.
PD: sorry for my bad english.
Source: Stackoverflow.com