152 votes

Comment référencer une variable de paramètres Django dans mon fichier models.py ?

C'est une question de débutant. Mais je suis perplexe. Comment puis-je référencer une variable de paramètres Django dans mon model.py ?

NameError: name 'PRIVATE_DIR' is not defined

J'ai aussi essayé beaucoup d'autres choses, notamment settings.PRIVATE_DIR

settings.py :

PRIVATE_DIR = '/home/me/django_projects/myproject/storage_dir'

models.py :

# Problem is here.
from django.core.files.storage import FileSystemStorage

fs = FileSystemStorage(location=PRIVATE_DIR)

class Customer(models.Model): 
    lastName = models.CharField(max_length=20) 
    firstName = models.CharField(max_length=20) 
    image = models.ImageField(storage=fs, upload_to='photos', blank=True, null=True)

Quelle est la bonne façon de procéder ?

7 votes

from django.conf import settings - docs.djangoproject.com/fr/dev/topics/settings/

344voto

juankysmith Points 2589

Essayez avec ça : from django.conf import settings puis settings.VARIABLE pour accéder à cette variable.

VARIABLE doit être en majuscule. Sinon, cela ne fonctionnera pas.

19 votes

Quelque chose de pertinent : si vous avez plusieurs instances de settings_something.py en raison d'un projet déployé dans plusieurs environnements, n'essayez pas d'importer à partir de app.settings . Les variables écrasées dans les autres fichiers ne seront pas prises en compte. Utilisez toujours l'importation mentionnée dans cette réponse. Il m'a fallu quelques heures pour comprendre ce qui se passait dans mon projet.

1 votes

Cela fonctionne, s'il est correctement configuré : avec la variable d'environnement DJANGO_SETTINGS_MODULE ou avec le paramètre de ligne de commande manage.py --settings= Plus d'informations dans la documentation : docs.djangoproject.com/fr/2.0/topics/settings

2 votes

Le VAR doit être un capital dernier, sinon il ne fonctionnera pas.

104voto

HelpyHelperton Points 295
from django.conf import settings

PRIVATE_DIR = getattr(settings, "PRIVATE_DIR", None)

Où il est dit None vous mettrez une valeur par défaut au cas où la variable ne serait pas définie dans les paramètres.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X