Updaten der Django settings.py für Programmierung und Entwicklung

So entwickelte ein Django Web-Anwendung, und jetzt müssen Sie es in die Produktion bereitstellen, müssen aber noch weiter aktiv die Entwicklung (Bugfixes, Tweaks, Hinzufügen und Testen neuer Funktionen, etc.)

In der Entwicklungsumgebung Sie hatte wahrscheinlich Debuggen aktiviert, Performance-Einstellungen deaktiviert, verwendet SQLite als Datenbank und andere Einstellungen, die Entwicklung einfacher und schneller zu machen.

Aber in der Produktion benötigen, um das Debuggen zu deaktivieren, damit Leistung und Verwendung einer echten Datenbank wie MySQL oder PostgreSQL, etc.

Ich hoffe, Ihre Entwicklungsumgebung können Ihre Produktionsumgebung sowie zu simulieren, eine Art Inszenierung, so dass Ihre letzte Tests vor der Bereitstellung bietet die kleinste Delta.

  • Manchmal müssen Sie den vollen Produktionsumgebung zu emulieren.
  • Manchmal müssen Sie den vollständigen Entwicklungsumgebung zu emulieren.
  • Manchmal ist eine Mischung aus beiden.

Dies führt zu der Frage, wie Sie nahtlos verwalten Sie Ihre Entwicklung und Herstellung Einstellungen ohne Zugabe von Overhead?

Es stellt sich heraus gibt es sehr viele Diskussionen darüber, wie Django settings.py, dass sowohl eine Entwicklungs-und Produktionsumgebung unterstützt, zum Beispiel Setup:

  • Ganz anders settings.py Dateien (in der Regel konfigurieren Sie den Webserver, um die Produktion Einstellungen, um die Python-Pfad hinzufügen, und verwenden Sie die Standard-(Entwicklungs-) Einstellungen bei der Verwendung des dev Webserver.
  • Mit dem Hostnamen
  • Durch die variable (PRODUKTION = True)

Wir haben vor kurzem kam in dieser Frage, wenn wir bereit zur schlüsselfertigen Hub in die Produktion einzusetzen waren.

Ich wusste nicht wirklich, wie die oben genannten Lösungen, so ist dies, was ich kam mit:

  • Settings.py (full-Einstellungen für die Produktion)
  • Einstellungen-dev.py (Override Produktion für die vollständige Entwicklung)

Wenn die Umgebungsvariable ENTWICKLUNG gesetzt ist, verwenden Sie die Einstellungen-dev, um die Produktion zu überschreiben.

Ich war mit der Idee, die volle Kontrolle über die Einstellungen über die Umwelt haben liebäugelt, für maximale Flexibilität, aber am Ende dagegen entschieden, da es zu viel Komplexität hinzugekommen nicht genug bekommen.

Unsere settings_dev.py sieht etwa so aus:

DEBUG = True
TEMPLATE_DEBUG = True

COMPRESS_AUTO = True
SESSION_COOKIE_SECURE = False

DATABASE_ENGINE = 'sqlite3'
DATABASE_NAME = '/tmp/dev.db'
DATABASE_USER = ''
DATABASE_PASSWORD = ''

TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.load_template_source',
    'django.template.loaders.app_directories.load_template_source',
)

Die settings.py (full-Einstellungen für die Produktion) umfasst die folgenden Ausschnitt am Ende.

if os.environ.get('DEVELOPMENT', None):
    from settings_dev import *