Je voulais ajouter une nouvelle réponse car, en tant que débutant, la réponse acceptée précédemment n'avait pas beaucoup de sens pour moi (elle ne représentait qu'une partie du puzzle).
Voici donc comment je stocke mes clés à la fois LOCALEMENT et en PRODUCTION (Heroku, et autres).
Nota: Vous ne devez vraiment le faire que si vous prévoyez de mettre votre projet en ligne. Si c'est juste un projet local, ce n'est pas nécessaire.
J'ai aussi fait un tutoriel vidéo pour les personnes qui préfèrent ce format.
1) Installez python-dotenv pour créer un environnement de projet local pour stocker votre clé secrète.
pip install python-dotenv
2) Créer un .env
dans votre répertoire de base (où manage.py
est).
YourDjangoProject
project
__init__.py
asgi.py
settings.py
urls.py
wsgi.py
.env
manage.py
db.sqlite3
Si vous avez un projet Heroku, il devrait ressembler à quelque chose comme ceci :
YourDjangoProject
.git
project
__init__.py
asgi.py
settings.py
urls.py
wsgi.py
venv
.env
.gitignore
manage.py
Procfile
requirements.txt
runtime.txt
3) Ajouter .env
à votre .gitignore
fichier.
echo .env > .gitignore # Or just open your .gitignore and type in .env
C'est ainsi que votre clé secrète est plus sûre, car vous ne téléchargez pas votre fichier .env sur git ou heroku (ou ailleurs).
4) Ajoutez votre SECRET_KEY de votre fichier settings.py dans le fichier .env comme suit (sans guillemets)
**Inside of your .env file**
SECRET_KEY=qolwvjicds5p53gvod1pyrz*%2uykjw&a^&c4moab!w=&16ou7 # <- Example key, SECRET_KEY=yoursecretkey
5) Dans votre fichier settings.py, ajoutez les paramètres suivants :
import os
import dotenv # <- New
# Add .env variables anywhere before SECRET_KEY
dotenv_file = os.path.join(BASE_DIR, ".env")
if os.path.isfile(dotenv_file):
dotenv.load_dotenv(dotenv_file)
# UPDATE secret key
SECRET_KEY = os.environ['SECRET_KEY'] # Instead of your actual secret key
ou, grâce à La réponse de @Ashkay Chandran :
from dotenv import load_dotenv, find_dotenv
load_dotenv(find_dotenv())
SECRET_KEY = os.environ['SECRET_KEY']
Et maintenant votre clé secrète est stockée localement avec succès.
Mise à jour : J'ai découvert que vous pouvez aussi utiliser le config
du paquet python-decouple
qui semble être un peu plus facile :
from decouple import config
SECRET_KEY = config('SECRET_KEY')
Maintenant, vous n'avez plus besoin de import os
ou utiliser dotenv
car il s'occupe de ces parties pour vous ET utilise toujours le fichier .env. J'ai commencé à l'utiliser dans tous mes projets.
6) Ajoutez la variable d'environnement SECRET_KEY sur votre hôte (tel que Heroku).
Je travaille principalement avec des sites Heroku, donc si vous souhaitez utiliser Heroku pour un projet Django, cette partie est pour vous.
Cela suppose que vous avez déjà configuré un projet Heroku et que vous avez téléchargé Heroku CLI sur votre ordinateur.
Vous avez deux options :
-
Depuis la ligne de commande / le terminal, vous pouvez entrer la commande suivante dans le répertoire de votre projet :
heroku config:set SECRET_KEY=yoursecretkey # Again, no quotes.
-
Vous pouvez aller dans votre tableau de bord Heroku, cliquer sur votre application, aller dans les paramètres de votre application, et voir la section "Config Vars" et cliquer sur "Reveal Vars" ou "Add Vars" et ajouter votre SECRET_KEY là.
Ensuite, lorsque vous poussez votre projet vers Heroku via git, il devrait fonctionner correctement sans aucun problème.
et c'est tout !
Cette réponse s'adresse aux débutants et aux intermédiaires afin de dissiper toute confusion (parce que c'était vraiment déroutant pour moi).
J'espère que cela vous aidera !
Bon codage.