Résolue

Partage sur Github en preservant les données confidentielles de settings.py

# Configuration # Git # PyCharm

Bonjour,

J'ai terminé le mini-site avec pycharm, comme indiqué en suivant le tuto à la lettre. J'aimerai le refaire, ou faire les lecons suivantes avec un depot github.

Github est plus qu'un outil de sauvegarde pour moi dans mon apprentissage, il me permet d'expliquer chaque évolution de code en faisant un commit, de sorte à voir son évolution et les raisons du changement de code.

Ceci dit, avant d'envoyer mon premier depot, j'aimerai connaitre la bonne pratique pour ne pas exposer la secret_key dans le fichier settings. Faut il dès le début de la création d'application mettre en place un equivalent à .env existant dans dans d'autres langages? ou est ce le fichier entier setting.py qu il nous faut simplement ignorer dans un .gitignore?

Dans le premier cas, j 'ai vu des exemples en créant un fichier .env mais c'etait sur vsCode avec un environnement bien plus réduit. Quelle serait ici la manière de faire?

Merci

Thibault houdon

Mentor

Bonsoir Julien,


Je t'invite à aller voir la réponse que j'avais faite à cet étudiant qui avait une question identique :

https://www.docstring.fr/accompagnement/questions/323/


N'hésite pas si tu as besoin de plus de précisions :)


Bonne continuation !

Merci de ta réponse rapide!


Hello,


en complément aussi j'avais fait une session de mentorat avec la création d'un repo github.


c'est la session du 01 décembre 2022

Merci à vous j'ai regardé les différentes possibilités.


J'ai fait le choix de créer un fichier config.py à côté de settings.py pour y mettre la SECRET_KEY, et j'ai réussi l'import qui n'a fonctionné qu'en rajoutant un point devant le nom du fichier

from .config import *

Sans quoi le serveur me disait que le module config n existait pas. ( aller, je veux bien connaitre la raison au passage lol)


Pour moi ça fonctionne donc en le rajoutant dans mon .gitignore et c est très bien pour ma formation, mais comme je suis un peu tatillon, quelle est la bonne pratique pour des projets pro ?

l import avec * comme dans la seconde réponse ou l'utilisation de la bibliothèque comme dans la première?


Hello,


pour moi le plus propre et flexible est d'utiliser cette méthode:


from dotenv import load_dotenv

# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent

project_folder = os.path.expanduser(BASE_DIR.parent)
load_dotenv(os.path.join(project_folder, '.env'))

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = os.environ.get("SECRET_KEY")


# .env
SECRET_KEY=hjksgdfhjdndeycvbcoucnqmpgdzeyg
ENV_TYPE=DEV
DB_NAME=./db.sqlite3
ALLOWED_HOST=127.0.0.1


avec un fichier .env exclu du process git (donc dans ton .gitignore)


en fait comme ça les variables comme "SECRET_KEY" peuvent être dans ton fichier .env mais tu peux aussi définir des variables d'environnement avec la commande


export my_env_var 


elle seront aussi accessibles via


os.environ.get(my_en_var)


pour ta question sur le .config je ne suis pas sûr de comprendre pourquoi, sur mon local ça fonctionne bien sans le "." . Ce doit être le serveur qui a besoin d'un import relatif pour être sûr que tu n'importe pas un autre fichier "config.py"

Salut Julien,


Concernant l'import du fichier config, ça dépend comment tu lances ton projet Django et donc ton dossier de travail.


Pour la bonne pratique, les deux sont utilisées, j'ai vu des entreprises qui fonctionnaient avec des fichiers Python (avec parfois plusieurs fichiers pour le développement, prod, et même des fichiers spécifique par développeur parfois pour modifier certaines choses).


Perso je préfère passer par les variables d'environnement car comme l'a mentionné Pierre-André, les variables d'environnement peuvent être définies au niveau du système, donc tu peux par exemple dans un terminal avant de lancer ton projet, changer un paramètre spécifique de ton projet en changeant une variable d'env alors qu'avec un fichier Python il faudrait forcément éditer ton fichier donc je trouve ça moins pratique.

C'est très clair!!

Merci Beaucoup!!

Inscris-toi

(c'est gratuit !)

Inscris-toi

Tu dois créer un compte pour participer aux discussions.

Créer un compte

Rechercher sur le site

Formulaire de contact

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.