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 и т. д., является общепринятым/рекомендованным способом.