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

Вернуться на верх