Skip to main content
This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (
Help us improve Python packaging - Donate today!

Secure your django sensible settings

Project Description


Secure Django settings (Works with other Python scripts)

This module creates a cryptokey outside the django project directory, encrypts with that cryptokey your django sensible settings and stores the encrypted values.

You can use it at your project file * Note: Before running the django site with gunicorn or similar for the first time, you must run somme manage command to be prompt for the sensible settings * Developed for Linux/Python2.7, Python3.5


Linux required packages: python-dev (python3.5-dev if python==3.5) libgmp-dev gcc pip install djangosecure



from djangosecure import DjangoSecretKey

SECRET_KEY_FILE_PATH = '/some/path/to/store/file.secret'
secret_key = DjangoSecretKey(SECRET_KEY_FILE_PATH)
SECRET_KEY = secret_key.key
  • Note: If the secret key file path does not exist it will try to create it. (write permissio required @SECRET_KEY_FILE_PATH origin)
  • Note: The secret file will be automatically created the first time you call secret_key.key
  • The cryptographic key is stored by default at ~/.private/django_secure.key you can change this by passing crypto_key_file= to the DjangoSecretKey constructor: secret_key = DjangoSecretKey(SECRET_KEY_FILE_PATH, crypto_key_file='path/to/your/cryptokey') DjangoDatabaseSettings and EncryptedStoredSettings accept crypto_key_file parameter too.


The first time you run python runserver you will be prompted for your database settings. They will be saved encrypted with the generated cryptokey generated by django-secure module.

You can have as many database configurations, change the parameter to change the configuration and running python runserver you will be prompted again for the new settings

from djangosecure import DjangoDatabaseSettings
databases = DjangoDatabaseSettings(os.path.join(PROJECT_ROOT, 'databases.cnf'), crypto_key_file='path/to/your/cryptokey)

    'default': 'default': databases.settings('production'),

Other settings

To encrypt any other setting use EncryptedStoredSettings, for example:

from djangosecure import EncryptedStoredSettings
encripted_settings = EncryptedStoredSettings('./hidden/settings/path'))

CELERY_BROKER = 'amqp://{0}:{1}@localhost//'.format(
    encripted_settings.get('celery', 'broker_username', config_file="config/file/path/here.cfg"),
    encripted_settings.get('celery', 'broker_password')
  • Note: File and path are automatically created at first call

Release History

This version
History Node


History Node


History Node


History Node


History Node


History Node


Download Files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

File Name & Hash SHA256 Hash Help Version File Type Upload Date
(7.3 kB) Copy SHA256 Hash SHA256
Source Nov 10, 2017

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting