Faça com que o Django prefixe https aos links

Se você está tentando construir um site seguro, a configuração de https é a primeira etapa.

Com o Django, se você estiver usando coisas assim HttpRedirectRequest, logo descobrirá que, por padrão, elas redirecionarão para o antigo http, que chatice.

Felizmente, existe uma maneira fácil de corrigir isso. Basta definir sua variável de ambiente HTTPS como “on”

Com o heroku você pode adicioná-lo assim

heroku config:add HTTPS=on

Ou você pode simplesmente adicioná-lo ao topo do seu arquivo wsgi.py assim

os.environ['HTTPS'] = "on"

Mais uma observação importante , certifique-se de que DEBUG seja False em settings.py ou isso não funcionará!

DEGUG = False

Além disso, se você estiver usando o heroku, seu proxy http reverso quebra, o request.is_secureque quebra outras coisas. O mais óbvio será que APPEND_SLASH = Trueisso é outra chatice. Felizmente, existe uma solução fácil. Basta adicionar a settings.py

SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https',)

via https://twitter.com/chuckharmston/status/225857111157006336 outras correções em https://github.com/allanlei/django-heroku-helpers

Isso foi tirado de uma ótima postagem em http://security.stackexchange.com/a/8970/17658