EDIT I miscounted - es wird zweimal gedruckt, nicht viermal.
Ich lege das in meine settings.py
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 Nutzer, der laut den Kommentaren nur als "rohit" bekannt ist, hat festgestellt, dass hier eine Lösung gefunden werden kann: Ссылка ~ Siehe den Kommentar zum Deaktivieren des Neuladens.
ACHTUNG Ich habe meinen Django-Code nicht mehr im Umlauf, daher weiß ich nicht, was der Noload tun wird. Viel Glück, Soldaten.
Wenn Sie die Thread-ID in settings.py ausdrucken, sehen Sie, dass settings.py tatsächlich in zwei verschiedenen Threads geladen wird.
Siehe diese Stackoverflow-Antwort und diesen Artikel für weitere Informationen.
Tatsächlich setzt 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, also scheint es, als ob Sie auf die globalen Variablen in settings.py direclty zugreifen.
Ich erinnere mich wirklich nicht, warum der Import zweimal passiert. Ich habe mich einmal damit befasst, als ich an django-dynamic-settings gearbeitet habe, die einen sehr ähnlichen Ansatz wie Django selbst verwenden.
Wie auch immer, wenn Sie an der "Magie" interessiert sind, können Sie den Ablauf ab dem execute_from_command_line
Aufruf in manage.py
verfolgen.
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.
Eine eng damit verbundene Frage wurde seit zweimal seit gestellt. Ich kann hinzufügen, dass ein Django-Core-Entwickler die Idee zurückgewiesen hat, dass dies irgendeine Art von Django-Bug ist; Es ist normales Verhalten.
Siehe auch dies von Graham Dumpleton.