Как импортировать переменные окружения в Django из локального файла - PullRequest
0 голосов
/ 06 мая 2019

Я готовлюсь к работе над своим первым профессиональным проектом Django, и у меня возникают проблемы с переменными среды для защиты приложения.До сих пор мне удалось создать локальный файл для хранения всех переменных на моем компьютере ...

env_variables.py

import os

db_user = os.environ.get('db_user')
db_password = os.environ.get('db_password')

# AWS DJANGO
export AWS_ACCESS_KEY_ID = "access_key"
export AWS_SECRET_ACCESS_KEY = "secret_key"
export AWS_STORAGE_BUCKET_NAME = "bucket_name"

print(db_user)
print(db_password)

Я использовалНастройки среды (Windows) для создания имени пользователя и пароля.Когда я запускаю файл, они работают.Я использую свои учетные данные AWS, чтобы проверить это.У меня сложилось впечатление, что Django может получить доступ к этой информации, независимо от того, где она находится на моем локальном компьютере.Поправьте меня, если я ошибаюсь.

settings.py

...

AWS_ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY')
AWS_STORAGE_BUCKET_NAME = os.environ.get('AWS_STORAGE_BUCKET_NAME')

...

Я знаю, что Django не обращается к этому файлу, потому что я получаю 400 за все моимедиа-файлы, но это работает, когда я помещаю ключи прямо в файл settings.py.Я полагаю, что пропускаю несколько шагов здесь.Я видел других Python-кодеров, способных делать это без необходимости использовать что-то вроде django-environment или других пакетов.Если кто-то может помочь, это будет очень признательно, потому что я хотел бы сделать это для всех своих проектов.

Редактировать Gunicorn моего Procfile - web: gunicorn project_name.wsgi Я не изменил свой файл wsgi.

1 Ответ

0 голосов
/ 07 мая 2019

Я бы предложил вам использовать django-environment для настройки вашего приложения.Храните все свои значения конфигурации в отдельном файле, скажем .env - это не должно быть добавлено в репозиторий.

.env

AWS_ACCESS_KEY_ID = "access_key"
AWS_SECRET_ACCESS_KEY = "secret_key"
AWS_STORAGE_BUCKET_NAME = "bucket_name"

Теперь в вашем Django settings.py загрузите файл env и используйте соответствующие ключи.

settings.py

import django-environ
env = environ.Env()
env.read_env(env.str('ENV_PATH', '/path/to/.env'))
AWS_ACCESS_KEY_ID = env('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = env('AWS_SECRET_ACCESS_KEY')
AWS_STORAGE_BUCKET_NAME = env('AWS_STORAGE_BUCKET_NAME')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...