Djheroku is a helper script that reads Heroku configuration from environment variables and injects them to Django configuration.
This is an easier way to control what Django does. Just add a few lines to your settings.py:
from djheroku import autopilot autopilot(vars())
Then you can make runtime changes to your application settings:
heroku addons:add sendgrid heroku config:set ADDONS=sendgrid heroku addons:add memcachier heroku config:set ADDONS=sendgrid,memcachier
Djheroku will change the variables accordingly.
Example:
# settings.py from djheroku import sendgrid vars().update(sendgrid())
This is equivalent of typing in:
# settings.py import os if 'SENDGRID_USERNAME' in os.environ and 'SENDGRID_PASSWORD' in os.environ: EMAIL_HOST = 'smtp.sendgrid.net' EMAIL_HOST_USER = os.environ['SENDGRID_USERNAME'] EMAIL_HOST_PASSWORD = os.environ['SENDGRID_PASSWORD'] EMAIL_PORT = 587 EMAIL_USE_TLS = True
If any of the variables are not present, the configuration will be left as it
is. Currently there are two helpers: sendgrid()
and mailgun()
.
There are three middleware classes in Djheroku. They are used to redirect permanently from one URL to another.
NoWwwMiddleware
removed www. from URLs of incoming requests. The opposite is built-in functionality of Django. Enable this Middleware and set NO_WWW = True in settings.py to activate.PreferredDomainMiddleware
redirects all domains directed to the application to a preferred one.ForceSSLMiddleware
redirects all non-SSL connections to a secure connection.
Each of these middlewares does one thing only and combined they will lead into three separate redirects or even a eternal loop if configured properly wrong.