У меня есть конфиденциальные данные (пароли базы данных) в settings.py, и мне посоветовали загрузить мой проект Django в репозиторий github, прежде чем отправлять его в Heroku в разделе «Начало работы с Django на Heroku». Если я помещу settings.py в .gitignore, то, по-видимому, он не будет развернут с моим проектом. Как я могу предотвратить раскрытие settings.py, но при этом развернуть его вместе с моим проектом?
Скрытие паролей settings.py для развертывания Heroku Django
Ответы (2)
Вы можете использовать переменные среды (с heroku config:add SECRET=my-secret
), чтобы настроить конфиденциальные данные и получить их в своих настройках с помощью:
SECRET = os.environ.get('SECRET', 'my-default-secret-key')
Если вы не хотите иметь возможность запускать приложение без настройки некоторых данных, используйте вместо этого следующий синтаксис:
SECRET = os.environ['SECRET']
Это вызовет исключение, если вы не установили переменную среды SECRET
.
Вам следует использовать инструмент, предназначенный для выделения конфиденциальных данных. Я использую YamJam https://pypi.python.org/pypi/yamjam/. Он позволяет использовать все преимущества метода os.environ, но проще - вам все равно нужно установить эти переменные среды, вам нужно будет поместить их где-нибудь в файл script / rc. YamJam устраняет эти вопросы и сохраняет эти настройки конфигурации в хранилище конфигураций вне проекта. Это позволяет вам иметь разные настройки для разработки, подготовки и производства.
from YamJam import yamjam
secret = yamjam()['myproject']['secret']
Это основное использование. И, как и метод os.environ, он не зависит от фреймворка, вы можете использовать его с Django или любым другим приложением / фреймворком. Я перепробовал их все, несколько файлов settings.py, хрупкую логику if / then и споры о среде. В итоге я перешел на ямджам и не пожалел.