2012-06-22 2 views
8

EDIT Ich habe falsch gezählt - es wird zweimal ausgedruckt, nicht viermal.django - settings.py scheint mehrmals geladen zu werden?

Ich habe dies in meiner settings.py

print 'ola!' 

und beim Start "ola" wird zweimal ausgedruckt! Das scheint so, als wäre etwas mit meinem pycharm django Projekt nicht in Ordnung ... irgendwelche Ideen, warum das passieren würde? Es ist nicht in einer Schleife oder irgendetwas (das ist mir sowieso bewusst)

Prost!

YAY Der Benutzer nur als „rohit“ genannt, nach den Kommentaren, hat festgestellt, dass hier eine Lösung gefunden werden kann: https://stackoverflow.com/a/2110584/1061426 ~ sehen Neuladen den Kommentar zu deaktivieren.

ACHTUNG Ich habe meinen Django-Code nicht mehr im Umlauf, daher weiß ich nicht, was der Noload tun wird. Viel Glück, Soldaten.

+0

Gefunden die Antwort hier: http://StackOverflow.com/Questions/2110545/why-is-init-module-in-Django-project-loaded-twice#comment31434551_2110584 – rohit

Antwort

6

Wenn Sie die Thread-ID in settings.py ausdrucken, sehen Sie, dass settings.py tatsächlich in zwei verschiedenen Threads geladen wird.

Weitere Informationen finden Sie unter this stackoverflow response und this article.

1

Django macht einige seltsame Dinge mit settings.py, und es wird mehr als einmal ausgeführt. Ich bin es gewohnt, es zweimal importiert zu sehen, nicht sicher, warum in PyCharm du viermal bekommst. In settings.py musst du vorsichtig mit Aussagen mit Nebenwirkungen umgehen.

+0

Entschuldigung, ich habe falsch gezählt - Sie haben Recht, Es erscheint zweimal – bharal

2

Eigentlich macht Django einen Wrapper um Einstellungen. Es ist im Grunde ein Objekt (Einstellungsobjekt, wenn Sie so wollen), das Ihnen Zugriff auf einige direkte Setter wie settings.WHATEVER gibt, so scheint es, als ob Sie auf die globalen Variablen in settings.py direclty zugreifen.

Ich kann mich wirklich nicht erinnern, warum der Import zweimal passiert. Ich habe einmal darüber nachgedacht, als ich an django-dynamic-settings arbeitete, die einen sehr ähnlichen Ansatz wie Django selbst verwendet. Wie auch immer, wenn Sie an der "Magie" interessiert sind, können Sie den Fluss ab dem Anruf in manage.py folgen.

1

Eine eng verwandte Frage wurde mindestens twice since gestellt. Ich kann hinzufügen, dass ein Django Core-Entwickler rejected die Idee, dass dies irgendeine Art von Django Bug ist; Es ist normales Verhalten.

Siehe auch this von Graham Dumpleton.