Странность отладки Django в IIS: DEBUG = False по-прежнему работает в режиме отладки - PullRequest
0 голосов
/ 29 июня 2018

Сводка: Мой сайт работает в режиме отладки, даже если для него установлено значение DEBUG = False.

К вашему сведению, я исследовал это и нашел несколько отличных ответов и идей по тестированию в этих смежных вопросах (ни один из которых не помог, хотя логически они ДОЛЖНЫ иметь): django DEBUG = False по-прежнему работает в режиме отладки и Heroku Django DEBUG Настройка не применяется


Переменная среды IIS FastCGIHandler:

Имя = DJANGO_DEBUG
Значение = False

Примечание. При удалении этой переменной среды возникает ошибка 500 независимо от значения параметра production.py.

Настройки / production.py:

Различные сценарии пробовали в файле settings / production.py с использованием переменной env, установленной в False, в моем FastCGIHandler:

  1. DEBUG = os.environ.get('DJANGO_DEBUG', False)

    • РЕЗУЛЬТАТ: Сайт работает в режиме отладки
  2. DEBUG = bool(os.environ.get('DJANGO_DEBUG', False))

    • РЕЗУЛЬТАТ: Сайт работает в режиме отладки
  3. DEBUG = False (жесткий код без env var)

    • РЕЗУЛЬТАТ: Сайт не работает, возвращает 500 страниц, а отслеживание ошибок дает ValueError: Missing staticfiles manifest entry for 'images/favicon/manifest.json', что является очень странной и вводящей в заблуждение ошибкой.

Другие действия:

  • Я проверил файлы base.py и production.py для любых других ссылок на DEBUG или на переменную DJANGO_SETTINGS, и они понятны. Я также искал другие файлы .py, с которыми взаимодействует сервер IIS (wsgi.py, manage.py).
  • Я даже пытался установить DEBUG = False в файле base.py с теми же результатами.
  • Я установил python-decouple и попытался использовать это.
  • Я установил django-environment и попытался использовать его (у меня на этом сервере работает другой сайт django, использующий django-environment для доступа к переменным окружения, который работает нормально.)

Я никогда не видел ничего подобного. Другие переменные среды работают нормально, так что, похоже, это около логического значения. И почему не работает жесткое кодирование переменной DEBUG в настройках Python ???

Буду признателен за любую помощь в выяснении, где искать дальше.

1 Ответ

0 голосов
/ 29 июня 2018

Переменные среды всегда являются строками. Непустая строка всегда имеет логическое значение True, даже если она содержит строку «False».

Вам нужно сравнить значение со строкой:

DEBUG = (os.environ.get('DJANGO_DEBUG') == "True")

или просто удалите переменную из настроек IIS, если вы хотите работать в режиме без отладки.

Другая ошибка не "странная или вводящая в заблуждение", но проблема с вашими статическими файлами, которые вам нужно будет исправить перед использованием бэкэнда ManifestStorage в режиме без отладки.

...