django - settings.py scheint mehrmals geladen zu werden?

8

EDIT I ​​miscounted - es wird zweimal gedruckt, nicht viermal.

Ich lege das in meine settings.py

%Vor%

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.

    
bharal 22.06.2012, 03:16
quelle

4 Antworten

6

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.

    
jarmod 16.03.2013, 20:31
quelle
2

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.

    
Torsten Engelbrecht 22.06.2012 07:24
quelle
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.

    
Ned Batchelder 22.06.2012 03:20
quelle
1

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.

    
Mike O'Connor 29.09.2014 00:39
quelle

Tags und Links