Hintergrund
Ich versuche, meine Einstellungen von Umgebung zu spalten folgenden these instructions gefunden.Django-Einstellungen Modul von nicht
Nun möchte Ich mag einfach wie so meinen Test-Befehl ausführen:
./run ./manage.py test --settings=bx.settings.local
derzeit die folgende Zeile
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "bx.settings")
in diesen Dateien verfügbar ist
manage.py
wsgi.py
und so i entfernt es (da es stattdessen von der Befehlszeile gelesen werden soll).
Ich habe auch einen settings
Ordner in meinem bx
App und hinzugefügt, um die Dateien
__init__.py
base.py
local.py
zu.
Hinweise
Anmerkung: die run
Datei ist dies:
#!/usr/bin/env bash
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
docker run \
--env "PATH=/beneple/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" \
--link beneple_db:db \
-v $DIR:/beneple \
-t -i --rm \
beneple/beneple \
[email protected]
Problem
, wenn ich den Befehl
./run ./manage.py test --settings=bx.settings.local
ich diesen Fehler
File "/beneple/bx/org/serializers.py", line 10, in <module>
from bx.settings import DOMAIN
ImportError: cannot import name DOMAIN
in serializers.py:10 bekommen, haben wir diese
from bx.settings import DOMAIN
so ersetzt i bx.settings
mit
from django.conf import settings
from settings import DOMAIN
und stattdessen bekam ich diesen Fehler :
File "/beneple/bx/org/serializers.py", line 12, in <module>
from settings import DOMAIN
ImportError: No module named settings
Debuggen
der seltsame Teil ist, dass, wenn ich nach from django.conf import settings
einen Haltepunkt setzen, und geben Sie die folgenden:
ipdb> print(settings)
<Settings "bx.settings.local">
ipdb> settings.DOMAIN
'http://localhost:8000'
Ich bin verwirrt, warum es keine Einstellungen hier als Modul zu erkennen?
Update
Ich bemerkte, dass meine Vorlagen Verzeichnis geändert.In meinen Einstellungen, die ich
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
..
TEMPLATES = [{
'DIRS': [os.path.join(BASE_DIR, 'templates')],..
jedoch bemerken den Unterschied im Wert der settings.TEMPLATES[0]['DIRS']
zwischen der alten Art und Weise und neue Art und Weise Datei haben:
alte Art und Weise:
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "bx.settings")
['/beneple/templates']
neue Art und Weise :
./run ./manage.py test --settings=bx.settings.local
['/beneple/bx/templates']
Warum ist das der Fall? und wie mache ich (programmatisch) den neuen Weg das gleiche Ergebnis wie das alte?
Sie importieren die Einstellungen nicht direkt, sondern sie so Zugang von 'django.conf Import Einstellungen' dann' settings.DOMAIN'. –