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 ->.

  1. Enable Django Support
  2. НаборDjango project rootв основную папку вашего проекта
  3. НаборSettingsна вашmain_project/your_app/settings.py
  4. Набор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. Попробовав все ответы здесь, я все еще не мог понять проблему, вот что я сделал:

  1. Cd в каталог проекта. например, cd project-dir
  2. Я мигрировал. например, python manage.py migrate
  3. Я создал суперпользователя. например, python manage.py создает суперпользователя
  4. Введите желаемую информацию, такую ​​как имя пользователя, пароль, адрес электронной почты и т. Д.
  5. Вы должны получить ответ «суперпользователь успешно создан».
  6. Теперь запустим сервер. Например, сервер запуска python manage.py
  7. Щелкните отображаемый URL-адрес
  8. URL-адрес в вашем браузере должен выглядеть так: 127.0.0.1:8000/Quit
  9. Теперь измените URL-адрес в своем браузере на 127.0.0.1:8000/admin
  10. Вы должны увидеть страницу административного входа
  11. Войдите в систему с данными суперпользователя, которые вы создали ранее
  12. Вы должны войти в администрацию Django.
  13. Теперь нажмите "просмотреть сайт" вверху страницы.
  14. Вы должны увидеть страницу, которая показывает, что "установка прошла успешно ..... Debug = True"
  15. Вуаля! ваш сервер запущен и работает

Просто закомментируйте строку: ALLOWED_HOSTS = [...]

Другие вопросы по тегам