Skip to content

Instantly share code, notes, and snippets.

@sandervm
Last active April 22, 2022 15:15
Show Gist options
  • Save sandervm/2b15775012685553f0e2 to your computer and use it in GitHub Desktop.
Save sandervm/2b15775012685553f0e2 to your computer and use it in GitHub Desktop.
Generate Django secret key commandline
$ python -c 'import random; print "".join([random.choice("abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)") for i in range(50)])'
@o-jasper
Copy link

Seems exceedingly unlikely the random package contains a sufficiently secure random.

In Linux you can read from /dev/urandom or /dev/random(slower) and see someone suggesting random.SystemRandom which is probably more portable.

@fisadev
Copy link

fisadev commented Feb 27, 2020

base64 /dev/urandom | head -c50

@loa
Copy link

loa commented May 17, 2020

Docker edition which utilizes django default secret key generation:

docker run --rm python:3 bash -c "pip install django; django-admin startproject foo; echo; cat foo/foo/settings.py | grep SECRET_KEY"
docker run --rm python:3 bash -c "pip install django; python -c 'from django.core.management.utils import get_random_secret_key; get_random_secret_key()'"

Copy link

ghost commented Jun 26, 2020

Using Mr. Ioa's suggestion I was able to generate a secret key. However when I ran again 'docker-compose down", it threw this error

ERROR: environment variable name 'SECRET_KEY ' may not contains whitespace.

Any suggestion how to fix that.

@avvijeet
Copy link

@halfprisoner 'SECRET_KEY ' there is a trailing white space in your env variable

Also, how did you store the random key generated above into a variable before passing it as an env variable in the docker run of your project?

@s3rgeym
Copy link

s3rgeym commented Dec 1, 2021

Лучше бы ты написал как из SECRET_KEY сгенерировать куку

@millerthegorilla
Copy link

This is how django does it internally, translated into bash...

KEY=$(chars='abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)'; python -c "import secrets; print(''.join(secrets.choice('${chars}') for i in range(50)))")

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment