[PYTHON] Ändern Sie den Einstellungswert von settings.py entsprechend der Entwicklungsumgebung

Überblick

Wenn Sie andere als SQLite mit Django verwenden, sind DB-Verbindungsinformationen in settings.py enthalten. Seien Sie also vorsichtig, wenn Sie sie mit Github verwalten. Da sich das Verbindungsziel je nach Entwicklungsumgebung ändert, ist es außerdem schwierig, settings.py für jedes Verbindungsziel zu erstellen. Alle Dateien müssen aktualisiert werden, wenn eine andere Änderung als das Verbindungsziel vorliegt.

Nach vielen Recherchen fand ich eine Bibliothek namens "django-environ". Einstellungen wie das DB-Verbindungsziel können beim Starten von Django in Systemumgebungsvariablen gespeichert werden, und die Systemumgebungsvariablen, die beim Laden von settings.py gespeichert werden, können in Feldern wie ALLOWED_HOSTS festgelegt werden. Es handelt sich um eine Bibliothek, die erstellt wurde, um die Verwaltung von settings.py zu vereinfachen. Offizielle Seite ist ebenfalls gut, aber die folgende Seite war sehr einfach zu verstehen, daher werde ich das Verfahren zur Einführung von "django-environ" zusammenfassen.

Zitat: Versuchen Sie, Umgebungsvariablen mit django-environ zu verwalten

Einführungsmethode

  1. Installieren der Bibliothek
  2. Erstellen einer Umgebungsvariablen-Definitionsdatei
  3. In settings.py einbinden

Schritt 1

Installieren Sie einfach die Bibliothek django-environ mit pip.

pip install django-environ

Schritt 2

Erstellen Sie eine Umgebungsvariablen-Definitionsdatei. Nennen Sie die Datei ".env" und erstellen Sie sie im selben Verzeichnis ** wie ** manage.py. Der Grund für die Erstellung im selben Verzeichnis wie manage.py wird später in Schritt 3 beschrieben.

djnago project
├── manage.py
├── .env
└── xxxx
    ├── __init__.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

Definieren Sie in der ENV-Datei systemspezifische Informationen wie ALLOWED_HOSTS und DATABASES, die in settings.py im Format key = value definiert sind. Wenn Sie eine andere Datenbank als SQLite verwenden, müssen Sie in DATABASES einen Benutzernamen und ein Kennwort festlegen. Wenn Sie diese jedoch in DATABASE_URL schreiben, können Sie sie in eine Zeile schreiben. Wenn Sie mehrere Hostnamen in ALLOWED_HOSTS definieren, trennen Sie diese durch Kommas. Im Folgenden werden die Elemente definiert, die zum Wechseln zwischen der Entwicklungsumgebung und der Produktionsumgebung erforderlich sind.

.env


SECRET_KEY=aiueo
DEBUG=True
ALLOWED_HOSTS=
DATABASE_URL=mysql://USER:PASSWORD@HOST:PORT/NAME

Die Beschreibungsmethode von DATABASE_URL in jeder Datenbank lautet wie folgt.

Engine Django Backend URL
PostgreSQL django.db.backends.postgresql_psycopg2 postgres://USER:PASSWORD@HOST:PORT/NAME
PostGIS django.contrib.gis.db.backends.postgis postgis://USER:PASSWORD@HOST:PORT/NAME
MSSQL sql_server.pyodbc mssql://USER:PASSWORD@HOST:PORT/NAME
MySQL django.db.backends.mysql mysql://USER:PASSWORD@HOST:PORT/NAME
MySQL (GIS) django.contrib.gis.db.backends.mysql mysqlgis://USER:PASSWORD@HOST:PORT/NAME
SQLite django.db.backends.sqlite3 sqlite:///PATH
SpatiaLite django.contrib.gis.db.backends.spatialite spatialite:///PATH
Oracle django.db.backends.oracle oracle://USER:PASSWORD@HOST:PORT/NAME
Oracle (GIS) django.contrib.gis.db.backends.oracle oraclegis://USER:PASSWORD@HOST:PORT/NAME
Redshift django_redshift_backend redshift://USER:PASSWORD@HOST:PORT/NAME

Schritt 3

.Env-Datei lesen

Lesen Sie die Einstellungsinformationen der ENV-Datei mit settings.py. Unten wird die .env-Datei in BASE_DIR gelesen. Wenn Sie die .env-Datei in einem anderen Verzeichnis als manage.py ablegen, müssen Sie das Verzeichnis angeben.

settings.py


import environ

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

env = environ.Env(DEBUG=(bool,True))
env.read_env(os.path.join(BASE_DIR,'.env'))

So stellen Sie jedes Feld ein

Sie müssen lediglich den Schlüsselnamen angeben, den Sie erhalten möchten, und die Einstellungen in der ENV-Datei abrufen. Der eingestellte Wert wird in der Env-Klasse gespeichert und kann in einem Wörterbuchtyp referenziert werden. Beachten Sie, dass ein KeyError auftritt, wenn Sie einen Schlüssel angeben, der nicht vorhanden ist. Dieser Bereich hat die gleichen Spezifikationen wie "os.environ".

Sie können es auch mit einer Funktion namens "get_value" erhalten. Mit get_value tritt KeyError auch dann nicht auf, wenn der Schlüssel nicht vorhanden ist, und der Rückgabewert kann als Argument angegeben werden. Sie können auch den Rückgabetyp angeben.

Env.get_value(var, cast=None, default=NOTSET, parse_default=False) -> float

ALLOWED_HOSTS verwendet eine Funktion, die einen Listentyp zurückgibt, wenn mehrere Hostnamen definiert sind. In DATABASES'default 'wurden der Benutzername und das Kennwort für die Verbindung zur Datenbank individuell definiert. Wenn Sie jedoch die Funktion .db () verwenden, wird der Inhalt von DATABASE_URL in einen Listentyp konvertiert, der von'default' gelesen werden kann. Es ist sehr praktisch, weil es tut.

settings.py


SECRET_KEY = env.get_value('SECRET_KEY',str)

DEBUG = env.get_value('DEBUG', bool)

ALLOWED_HOSTS = env.list('ALLOWED_HOSTS')

SESSION_COOKIE_AGE = env.get_value('SESSION_COOKIE_AGE', int) #Gültigkeitsdauer der Sitzung (Sekunden)

DATABASES = {
    'default':env.db(),
}

Zusammenfassung

Recommended Posts

Ändern Sie den Einstellungswert von settings.py entsprechend der Entwicklungsumgebung
Ändern Sie die Lautstärke von Pepper entsprechend der Umgebung (Ton).
So richten Sie die Entwicklungsumgebung von ev3dev ein [Windows-Version]
Einführung in Python Bereiten wir die Entwicklungsumgebung vor
Einstellung zur Ausgabe des Protokolls zur Ausführung von cron
Instanziierung der zuvor erstellten BOX-Entwicklungsumgebung
[C-Sprache] [Linux] Ruft den Wert der Umgebungsvariablen ab
Verbinden Sie die Maus mit dem Kreisel des Nintendo Switch Procon
SSH in eine virtuelle Umgebung mit vscode Remote Development
BGM wird automatisch entsprechend dem Inhalt der Konversation ausgewählt
Vereinheitlichen Sie die Umgebung des Python-Entwicklungsteams, beginnend mit Poetry
Vor- und Nachteile der Konvertierung der Entwicklungsumgebung von Django in Docker
Punkt entsprechend dem Bild
Erben Sie die Standardbibliothek, um den Durchschnittswert der Warteschlange zu ermitteln
Wartung der Django + MongoDB-Entwicklungsumgebung (mitten im Schreiben)
So gelangen Sie mit Vagrant in die Python-Entwicklungsumgebung
django kann nicht in der Entwicklungsumgebung von pipenv + pyenv installiert werden
Wechseln Sie das zu installierende Paket für jede Umgebung mit Gedichten
LINEbot-Entwicklung möchte ich den Betrieb in der lokalen Umgebung überprüfen
So ermitteln Sie die Speicheradresse des Pandas-Datenrahmenwerts
Verwenden von TensorFlow in Cloud 9 Integrierte Entwicklungsumgebung - Grundlagen der Verwendung
Protokollieren Sie die Omron-Umgebungssensorwerte regelmäßig mit Raspberry Pi
Finden Sie die Definition des Wertes von errno
Über den Rückgabewert von pthread_mutex_init ()
Über den Rückgabewert des Histogramms.
Memo zum Einstellen der Vim + Python-Entwicklungsumgebung
Überprüfen der NAOqi Python-Entwicklungsumgebung
Ergänzung zur Erklärung von vscode
Bereiten Sie die Entwicklungsumgebung mit anyenv vor
Verwenden Sie Cloud Dataflow, um das Ziel dynamisch entsprechend dem Wert der Daten zu ändern und in GCS zu speichern
[Golang-Fehlerbehandlung] Der beste Weg, die Verarbeitung nach der Art des Fehlers aufzuteilen
So wechseln Sie einfach die von Conda auf Jupyter erstellte virtuelle Umgebung
Ich habe 6 Methoden gemessen, um den Index des Maximalwerts (Minimalwerts) der Liste zu erhalten
Einstellung, um den Inhalt der Bibliothek mit pytest einzugeben und einen Debug-Test durchzuführen
[Entwicklungsumgebung] So erstellen Sie einen Datensatz in der Nähe der Produktionsdatenbank
Protokollierung der Omron-Umgebungssensorwerte mit Raspberry Pi (USB-Typ)
Wechseln Sie das zu ladende Modul für jede Ausführungsumgebung in Python
Ich habe versucht, den Höhenwert von DTM in einem Diagramm anzuzeigen
Die Geschichte des Versuchs, den Client wieder zu verbinden
Hinzufügen einer lokalen Entwicklungsumgebung unter MacOS
Skript zum Ändern der Beschreibung von Fasta
10 Methoden zur Verbesserung der Genauigkeit von BERT
So überprüfen Sie die Version von Django
Die Geschichte, MeCab in Ubuntu 16.04 zu setzen
Informationen zur virtuellen Umgebung von Python Version 3.7
So bereiten Sie die Python-Entwicklungsumgebung vor [Mac]
Erstellen Sie eine Ausführungsumgebung für Jupyter Lab
Verwenden Sie numpys .flatten () [0], um den Wert abzurufen
Versuchen Sie, jede Umgebung von Kivy vorzubereiten
Informationen zu der von Ihnen verwendeten Entwicklungsumgebung
Bereiten Sie die Entwicklungsumgebung für keyhac für Mac vor
Ermitteln Sie den Wert der mittleren Schicht von NN
Bau einer Entwicklungsumgebung für die Choreonoid-Werkstatt
Die Geschichte von pep8 wechselt zu pycodestyle
Die stärkste Python-Entwicklungsumgebung PyCharms Empfehlung
Die stärkste in Python integrierte Entwicklungsumgebung PyCharm
Machen Sie den Standardwert des Arguments unveränderlich
So machen Sie VS Code auf die venv-Umgebung und ihre Vorteile aufmerksam
Test der Differenz zwischen den Durchschnittswerten der Zähldaten gemäß der Poisson-Verteilung