Je développe une application django. Les modules d'importance pour mon problème sont donnés ci-dessous:django - problème d'importation circulaire lors de l'exécution d'une commande
globals.py -> contient des constantes qui sont utilisées dans toute l'application. SITE_NAME
et SITE_DOMAIN
sont deux de ceux-ci et sont utilisés pour remplir certaines chaînes. Voici comment je les ai définis:
from django.contrib.sites.models import Site
...
SITE_DOMAIN = Site.objects.get_current().domain
SITE_NAME = Site.objects.get_current().name
models.py -> modèles vivent à l'intérieur de ce module. importe certaines constantes de globals.py
some_command.py -> une commande qui importe également des constantes à partir de globals.
lorsqu'il est exécuté, les importations de commande une constante de globals.py et se jette dans un problème d'importation circulaire: à l'intérieur globals.py, get_current() de des sites app est appelée, et les sites app à son tour importe models.py qui a également les importations de globals.py.
EDIT:
L'application fonctionne parfaitement, sans rencontrer ce problème circulaire d'importation. L'importation de globals.py depuis le shell n'entraîne aucun problème. Même la commande peut être exécutée à partir du shell sans appeler manage.py.
Alors pourquoi manage.py une commande échoue en raison d'une importation circulaire?
Merci d'avance.
Certaines constantes de chaîne dans globals.py les utilisent, telles que celle-ci imaginaire: WELCOME_STRING = 'Bienvenue dans'% SITE_NAME – shanyu
Lol, constante chaîne de bienvenue. Ecrivez-vous aussi quelques-unes de vos opinions dans globals.py? http://www.c2.com/cgi/wiki?GlobalVariablesAreBad – drozzy
@drozzy "globals.py" est juste un conteneur pour les chaînes qui sont traduites. Ce n'est pas plus "global" que, par exemple, settings.py. Ne préjuge pas de son nom;) – shanyu