Django игнорирует значение DEBUG, когда я использую os.environ?
В настройках Django у меня следующее:
в файле env.py у меня есть следующий код:
os.environ.setdefault( «DEBUG», »True» )
В файле settings.py у меня есть следующий код: DEBUG = os.environ.get('DEBUG') == 'True'
Однако некоторые системы не видны после развертывания, но они прекрасно работают на моем локальном сервере.
Пожалуйста, помогите, спасибо.
Я попробовал изменить значение DEBUG на false, но ничего не изменилось.
Согласно документации по jango-окружению
попробуйте что-нибудь вроде этого
.env
DEBUG=on
DB_NAME=LOCAL_DB_NAME
settings.py
import environ
# cast default value
env = environ.Env(
DEBUG=(bool, False),
MAIL_ENABLED=(bool, False)
)
# False if not in os.environ because of casting above
DEBUG = env('DEBUG') # True
Похоже, что вы не выполняете файл env.py перед файлом settings.py.
На локальном сервере вы могли выполнить файл env.py вручную, и он был записан в ОС. Таким образом, даже если settings.py не выполнил файл env.py, он работал так, как было задумано.
В производстве или на удаленном сервере Убедитесь, что вы импортируете (или выполняете каким-либо другим способом) env.py перед settings.py.
settings.py
import os
import env # your env.py file
DEBUG = os.environ.get('DEBUG') == 'True'
...
Сиденота
Как сказано в верхнем комментарии, env.py не является стандартным/обычным способом использования переменных окружения, особенно в производстве.
Во время разработки использование файла .env очень распространено, а в производстве установка переменных окружения с помощью сервисов облачного провайдера, таких как AWS Secrets Managers и т. д., является общепринятым/рекомендованным способом.