Résolue

Variables d'environnement pour DATABASES de setting

# Configuration # Django # Bases de données

Gabriel Trouvé

Mentor

Bonsoir,


Je souhaiterai utiliser mysql pour un mini projet django.

pas de problème pour mettre dans un fichier env les valeurs pour DEBUG et ALLOWED_HOSTS par exemple.


Mais pour DATABASES c'est différent apparemment.

Savez-vous comment faire ?


Merci d'avance



DEBUG = env.bool("DEBUG", False)

ALLOWED_HOSTS = env.list("ALLOWED_HOSTS")
------
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}


Salut Gabriel,


tu peux faire comme ceci:


if os.environ.get("ENV_TYPE") == "DEV":
    ENGINE = "django.db.backends.sqlite3"
elif os.environ.get("ENV_TYPE") == "PROD":
    ENGINE = "django.db.backends.mysql"

DATABASES = {
    "default": {
        "ENGINE": ENGINE,
        "NAME": os.getenv("DB_NAME"),
        "USER": os.getenv("DB_USER"),
        "PASSWORD": os.getenv("DB_USER_PASSWORD"),
        "HOST": os.getenv("DB_HOST"),
        "PORT": os.getenv("DB_PORT")
    }
}


et dans ton fichier .env de production (sur pythonanywhere par exemple)


SECRET_KEY='%3gpkq(_vkpmy^+#0r34q*rq-547y4&8!jm8jm&jnb=f9#^8-^'
ENV_TYPE=PROD
TOKEN_DAYS_LIFE=1


ALLOWED_HOST='appnamepythonanywhere.com'

DB_NAME=username$tablename
DB_USER=username
DB_USER_PASSWORD=yourPassword
DB_HOST=yourHost
DB_PORT=3306


a ta disposition si ce n'est pas clair.

Gabriel Trouvé

Mentor

Merci PA, du coup il faut mettre en guillemets ou pas le port, l'host etc dans le .env ?

hello,


non normalement pas besoin mais pour la secret key et l'host je préfère en mettre mais c'est par précaution si jamais ils contiennent des '. Et attention pas d'espace avancer après le "="

Gabriel Trouvé

Mentor

Ok merci !😁

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.