web-dev-qa-db-fra.com

Django: Vérifiez si la variable des paramètres est définie

Voici un exemple de ce que j'essaie de réaliser. L'effet souhaité est qu'une fonction particulière doit prendre effet si et seulement si son paramètre pertinent existe est défini. Sinon, la fonction doit être désactivée.

settings.py:

SOME_VARIABLE = 'some-string'
ANOTHER_VARIABLE = 'another-string'

random_code_file.py:

from Django.conf import settings

if settings.is_defined('ANOTHER_VARIABLE'): # <- I need this.
    do_something(settings.ANOTHER_VARIABLE)
else:
    do_something_completely_different()

Dans le code ci-dessus, je manque tout ce que je dois faire au lieu de settings.is_defined.

Si ce n'est pas la bonne approche du problème, je serais également heureux d'entendre d'autres approches. L'effet souhaité est une fonction auto-activée qui ne prend effet que si le paramètre correspondant existe. Je préférerais éviter un paramètre spécial settings.ACTIVE_FEATURES Ou une valeur spéciale telle qu'une chaîne vide ou None pour que la fonctionnalité évalue si elle doit prendre effet ou non.

La dernière chose que j'aimerais faire est d'utiliser try/except. Je préfère opter pour une valeur vide indiquant l'exclusion de la fonctionnalité. - Mais si vous essayez/sauf que c'est vraiment la méthode préférée, je marquerai la réponse comme correcte si des sources ou des explications exhaustives sont fournies. En fait, cela vaut pour toute réponse.

Donc, en bref, j'ai besoin de la bonne façon de vérifier si une variable de paramètres est définie dans Django.

Merci d'avance!

37
Teekin

Il semble que vous l'ayez fait de la bonne façon: importez le module de configuration et vérifiez.

Et vous pouvez essayer d'utiliser:

if hasattr(settings, 'ANOTHER_VARIABLE'):

au lieu de:

if settings.is_defined('ANOTHER_VARIABLE'):

J'ai trouvé la documentation , j'espère que cela pourrait aider.

64
Alfred Huang