TLDR: Comment créer une Django Secret Key

Publié le

Enlevez la main qui n’a jamais ajouté une SECRET_KEY Django dans un commit au debout d’un projet e après, vous avez besoin de créer une nouvelle clé avant de l’envoyer à la prod?

Ce TLDR est un rappel rapide de comment créer une clé secrète, sans utiliser un site web pour le faire.

Django crée une clé toujours quand on commence un nouveau projet, donc cette fonction est déjà là et on va l’utiliser de cette façon:

from django.core.management.utils import get_random_secret_key

print(get_random_secret_key())

Si on ne veut pas ouvrir une session Python, il est possible de l’exécuter directement avec la ligne de commande:

python -c 'from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())'

N’oubliez pas qu’il faut avoir installé Django dans votre environnement après exécuter l’opération.

Actualisation Python 3.6+

Grâce à interaction de @ChristianHeimes et @pauloxnet dans un postage de @aclark4life chez twitter. J’ai appris que à partir de la version Python 3.6 la bibliothèque secrets a été ajoutée pour qui on puisse l’utiliser dans la création et manutention des chiffres aléatoires comme des clés secrètes.

C’est une bonne solution qu’utilise le concept de piles fournies de Python et on peut l’utiliser pour créer la SECRET_KEY sans avoir Django installé:

import secrets

print(secrets.token_urlsafe())

Vous pouvez aussi utiliser la ligne de commande:

python -c "import secrets; print(secrets.token_urlsafe())"

Et, si vous vous êtes déjà demandé comment Django fait ça désormais? Bon, ils l’utilisent aussi. 🎉

En commençant par la version 3.1.3 la fonction get_random_secret_key marche comme ça:

import secrets

length = 50
chars = 'abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)'

secret_key = ''.join(secrets.choice(chars) for i in range(length))

print(secret_key)
Licence Creative Commons

Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution - Partage dans les Mêmes Conditions 4.0 International .