В этом решении я использую django-dotenv , который является одной из зависимостей моего проекта, как указано в requirements.txt
как django-dotenv==1.4.1
. Преимущество этого подхода в том, что у вас есть отдельный файл .env
для каждой среды, в которой установлено приложение.
Создайте файл utils.py
в том же каталоге settings.py
со следующим содержимым:
from django.utils.crypto import get_random_string
def generate_secret_key(env_file_name):
env_file = open(env_file_name, "w+")
chars = 'abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)'
generated_secret_key = get_random_string(50, chars)
env_file.write("SECRET_KEY = '{}'\n".format(generated_secret_key))
env_file.close()
Затем измените файл settings.py
следующим образом:
import dotenv
from [project-folder-name] import utils
...
try:
SECRET_KEY = os.environ['SECRET_KEY']
except KeyError:
path_env = os.path.join(BASE_DIR, '.env')
utils.generate_secret_key(path_env)
dotenv.read_dotenv(path_env)
SECRET_KEY = os.environ['SECRET_KEY']
Для тех, кто не использует django-dotenv
, все, что вам нужно сделать, это добавить его в качестве зависимости и изменить manage.py
, чтобы загрузить его при запуске:
import dotenv
if __name__ == "__main__":
dotenv.read_dotenv()