Seite 1 von 1

django: getattr(settings, "BLA_BLA", False)

Verfasst: Dienstag 4. Dezember 2007, 09:07
von jens
Sagt mal, spricht irgendwas dagegen sowas zu machen (Also mit getattr zu arbeiten):

Code: Alles auswählen

from django.conf import settings

if getattr(settings, "BSP_VARIABLE", False) == True:
    # tu was
Funktionieren tut es jedenfalls...

Verfasst: Dienstag 4. Dezember 2007, 09:08
von mitsuhiko
a) warum soll es nicht funktionieren?
b) was spricht dagegen?
c) warum == True?

Verfasst: Dienstag 4. Dezember 2007, 09:09
von jens
Ja, keine Ahnung... Sie settings in django sind schon ein bisschen magic... Aber stimmt, das "== True" kann ich mir eigentlich sparen ;)

Verfasst: Dienstag 4. Dezember 2007, 09:10
von mitsuhiko
jens hat geschrieben:Ja, keine Ahnung... Sie settings in django sind schon ein bisschen magic... Aber stimmt, das "== True" kann ich mir eigentlich sparen ;)
Warum sind die Magic?

Verfasst: Dienstag 4. Dezember 2007, 09:15
von jens
Naja, das fängt schon damit an, das man die settings.py Datei nicht direkt importieren soll, sondern es über "from django.conf import settings" machen soll.

OK, es liegt wohl daran, das die die default Einstellungen haben wollen. Aber das würde doch auch anders gehen...

Komisch ist auch:
Note that django.conf.settings isn’t a module — it’s an object. So importing individual settings is not possible:

Code: Alles auswählen

from django.conf.settings import DEBUG  # This won't work.
Schon ein bischen magisch, oder nicht?

Verfasst: Dienstag 4. Dezember 2007, 09:19
von mitsuhiko
jens hat geschrieben:Naja, das fängt schon damit an, das man die settings.py Datei nicht direkt importieren soll, sondern es über "from django.conf import settings" machen soll.
Ja. Weil man zb testing Server hat, oder produktion Server oder Entwicklungseinstellungen und man nicht settings rumkopieren will, sondern einfach nur ein anderes DJANGO_SETTINGS_MODULE aktiviert.
OK, es liegt wohl daran, das die die default Einstellungen haben wollen. Aber das würde doch auch anders gehen...
Das hat damit nix zu tun.
Komisch ist auch:
Note that django.conf.settings isn’t a module — it’s an object. So importing individual settings is not possible:

Code: Alles auswählen

from django.conf.settings import DEBUG  # This won't work.
Schon ein bischen magisch, oder nicht?
Das ist nicht magisch, sondern logisch. settings ist kein Modul, sondern ein settings Objekt. Das foo_settings.py Modul ist nicht die einzige Möglichkeit ein Settings Objekt zu erstellen. Schau dir zb mal das Testsystem an.

Verfasst: Dienstag 4. Dezember 2007, 09:21
von jens
mitsuhiko hat geschrieben:Ja. Weil man zb testing Server hat, oder produktion Server oder Entwicklungseinstellungen und man nicht settings rumkopieren will, sondern einfach nur ein anderes DJANGO_SETTINGS_MODULE aktiviert.
Ah, ok. Da hast du recht... Das hatte ich nicht bedacht ;)