CommandError: Вы должны установить settings.ALLOWED_HOSTS, если DEBUG имеет значение False
Я использую Django 1.6.5 в моей программе txsite с настройками:
DEBUG = True
Я установил для DEBUG значение False, но когда runserver
Я получаю следующую ошибку:
CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False
Я пробовал настройку ALLOWED_HOSTS = ['127.0.0.1', 'localhost']
но я получаю ту же ошибку.
Кто-нибудь знает, как это понять?
18 ответов
Пытаться
ALLOWED_HOSTS = ['*']
Менее безопасен, если вы не выключены или не используете публичную локальную сеть, но это то, что я использую, и это работает.
РЕДАКТИРОВАТЬ: Интересно, что мне нужно было добавить это в некоторые из моих 1,8 проектов, даже когда DEBUG = True
, Очень не знаю почему.
РЕДАКТИРОВАТЬ: Это связано с обновлением безопасности Django, как упоминалось в моем комментарии.
Ваше решение может состоять в том, чтобы добавить исходный IP-адрес и / или имя хоста также:
ALLOWED_HOSTS = ['localhost', '127.0.0.1', '111.222.333.444', 'mywebsite.com']
В основном заголовок хоста (или X-Forwarded-Host
если USE_X_FORWARDED_HOST
включен) должен соответствовать одному из значений в ALLOWED_HOSTS
,
Убедитесь, что он не переопределен снова внизу в вашем settings.py. Настройки по умолчанию имеют:
ALLOWED_HOSTS = []
Из документации: https://docs.djangoproject.com/en/1.10/ref/settings/
если DEBUG имеет значение False, вам также необходимо правильно установить параметр ALLOWED_HOSTS. В противном случае все запросы будут возвращены как "Bad Request (400)".
И отсюда: https://docs.djangoproject.com/en/1.10/ref/settings/
Я использую что-то вроде этого:
ALLOWED_HOSTS = ['localhost', '127.0.0.1', 'www.mysite.com']
Просто сделай это:
ALLOWED_HOSTS = ['localhost', '127.0.0.1']
Это сделает свое дело.
Вы можете попробовать это, у меня это сработало.
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False
ALLOWED_HOSTS = ['localhost', '127.0.0.1']
Если вы работаете в PyCharm
, проверить Environmental variables
для тебя Django server
, Вы должны указать правильное module.settings
файл
Если вы используете PyCharm
Это решение применяется только в том случае, если вы используете
другой файл и у вас установлены переменные среды. У меня была такая же проблема, но в моем случае проблема заключалась в том, что я использовал файл, отличный от файла по умолчанию (и закомментировал весь исходный файл).
settings.py
), хотя я правильно настроил его в моем
manage.py
но в PyCharm мне пришлось настроить его также в моих переменных среды с помощью:
Edit Run Configurations >> Environment Variables
Я также столкнулся с той же ошибкой и обнаружил, что это происходит из-за изменения конфигурации файла настроек. Вы должны настроить несколько вещей, как указано ниже.
Пытаться
В настройках.py
ALLOWED_HOSTS = ['*']
В файле manage.py
def main():
"""Run administrative tasks."""
os.environ.setdefault('DJANGO_SETTINGS_MODULE', '<your-project-name>.settings')
В asgi.py
В wsgi.py
os.environ.setdefault('DJANGO_SETTINGS_MODULE', '<your-project-name>.settings')
Итак, в моем основном каталоге в моем проекте django у меня было два каталога с одинаковыми именами, поэтому я удалил папку настроек, которая у меня была, и сохранил файл settings.py, который поставляется с django.
Что у меня было изначально
<name-of-your-project-app>/
├── __init__.py
├── asgi.py
├── settings
│ ├── __init__.py
│ ├── base.py
│ └── development.py
├── settings.py
├── urls.py
└── wsgi.py
Что у меня было потом
<name-of-your-project-app>/
├── __init__.py
├── asgi.py
├── settings.py
├── urls.py
└── wsgi.py
В моем случае я разделил свойsettings.py
вbase.py
и в папке настроек. Это выглядело примерно так:
<name-of-your-project-app>/
├── __init__.py
├── asgi.py
├── settings
│ ├── __init__.py
│ ├── base.py
│ └── development.py
├── urls.py
└── wsgi.py
Проблема была намного серьезнее, чем ALLOWED_HOSTS=..., потому что ни одна из настроек не была распознанаpython manage.py runserver
.
Исправление заключалось в настройке DJANGO_SETTINGS_MODULE, запустив
export DJANGO_SETTINGS_MODULE=decoupled_dj.settings.development
в командной строке. Я думаю, что это говорит Джанго: «Эй, поищи мои настройки вdevelopment.py
'
Вы получаете эту ошибку, потому что файл settings.py не распознается Pycharm правильно. Поэтому вы должны указать файл settings.py в настройках.
Перейдите в: Настройки -> Языки и платформы -> Django ->.
-
Enable Django Support
- Набор
Django project root
в основную папку вашего проекта - Набор
Settings
на вашmain_project/your_app/settings.py
- Набор
Manage script
на вашmain_folder/manage.py
Убедитесь, что имя каталога совпадает с именем, которое вы указываете в файле INSTALLED_APPS. Иногда это решение ошибок.
Пытаться
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
ALLOWED_HOSTS = ['*']
Значение "*" соответствует чему угодно; в этом случае вы несете ответственность за собственную проверку заголовка Host.
Столкнулся с той же ошибкой при использовании файла .env в разработке в локальной настройке на моем компьютере, который я не копировал на рабочем сервере. Как только я добавил файл .env на производственный сервер, ошибка была устранена. Я также добавил IP-адрес сервера в список разрешенных_хостов в файле настроек.
Я установил ALLOW_HOSTS, INTERNAL_IPS и DEBUG = TRUE
но все равно получил эту ошибку. Моя проблема заключалась в том, что я создал пакет python, имя которого было «настройки» в основном приложении. и это имя пакета мешало работе с файлом settings.py.
Я тоже испытал этот cmderror. Попробовав все ответы здесь, я все еще не мог понять проблему, вот что я сделал:
- Cd в каталог проекта. например, cd project-dir
- Я мигрировал. например, python manage.py migrate
- Я создал суперпользователя. например, python manage.py создает суперпользователя
- Введите желаемую информацию, такую как имя пользователя, пароль, адрес электронной почты и т. Д.
- Вы должны получить ответ «суперпользователь успешно создан».
- Теперь запустим сервер. Например, сервер запуска python manage.py
- Щелкните отображаемый URL-адрес
- URL-адрес в вашем браузере должен выглядеть так: 127.0.0.1:8000/Quit
- Теперь измените URL-адрес в своем браузере на 127.0.0.1:8000/admin
- Вы должны увидеть страницу административного входа
- Войдите в систему с данными суперпользователя, которые вы создали ранее
- Вы должны войти в администрацию Django.
- Теперь нажмите "просмотреть сайт" вверху страницы.
- Вы должны увидеть страницу, которая показывает, что "установка прошла успешно ..... Debug = True"
- Вуаля! ваш сервер запущен и работает