67 votes

Comment imprimer le contenu de mes paramètres dans un shell django ?

Quand je cours python manage.py shell Je peux imprimer le chemin d'accès à python.

>>> import sys
>>> sys.path

Que dois-je taper pour introspecter tous mes paramètres de django ?

0 votes

Vous voulez dire votre fichier settings.py ?

83voto

Noah Abrahamson Points 710

Je sais que c'est une vieille question, mais avec les versions actuelles de django (1.6+), vous pouvez accomplir ceci à partir de la ligne de commande de la manière suivante :

python manage.py diffsettings --all

Le résultat montrera tous les paramètres, y compris les paramètres défectueux (indiqués par ### devant le nom du paramètre).

2 votes

Il n'existe pas (encore) de django 2.7+. diffsettings existe dans >=1.4. --all a été ajouté en 1.6. docs.djangoproject.com/fr/1.9/ref/django-admin/#diffsettings

0 votes

@Florian Merci d'avoir remarqué cet oubli. J'ai mis à jour ma réponse pour corriger cela.

0 votes

C'est la bonne réponse. Afficher les paramètres sans modifier le code serait le meilleur choix.

82voto

pajton Points 7374
from django.conf import settings
dir(settings)

et choisissez ensuite l'attribut parmi ce que dir(settings) vous ont montré à dire :

settings.name

donde name est l'attribut qui vous intéresse

Alternativement :

settings.__dict__

imprime tous les paramètres. Mais il imprime également les attributs standard du module, ce qui peut encombrer la sortie.

9 votes

L'importation des paramètres ne fonctionnera pas. Essayez d'importer les paramètres de django.conf comme vinod l'a suggéré.

2 votes

settings est un module, pas une classe. Ainsi, settings.__dict__ n'est pas vraiment utile.

0 votes

Comment faire à partir du fichier settings.py lui-même ? J'imagine qu'importer des paramètres depuis settings ne serait pas une bonne solution.

20voto

Skylar Saveland Points 4131

Au cas où un débutant tomberait sur cette question en voulant être nourri à la cuillère de la façon d'imprimer les valeurs pour tous les paramètres :

def show_settings():
    from django.conf import settings
    for name in dir(settings):
        print(name, getattr(settings, name))

15voto

Vinod Kurup Points 923

Pour afficher tous les paramètres de django (y compris les paramètres par défaut non spécifiés dans votre fichier de paramètres local) :

from django.conf import settings
dir(settings)

3voto

Nick S. Points 1403

Dans votre shell, vous pouvez appeler la fonction intégrée de Django Diffsettings :

from django.core.management.commands import diffsettings

output = diffsettings.Command().handle(default=None, output="hash", all=False)

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