[PYTHON] Behandeln Sie Konstanten in Django-Vorlagen

Einführung

Wenn Sie grundsätzlich feste Konstantenwerte wie Domänenname und Site-Name in der Django-Vorlage verarbeiten möchten, verwenden Sie die Funktion "Kontextprozessor" und übergeben Sie die Konstante nicht jedes Mal von der Ansichtsseite, genau wie eine Konstante aus der Vorlage. Kann gehandhabt werden.

Umgebung

Was ist ein Kontextprozessor?

Der Kontextprozessor ist eine Funktion, die das Hinzufügen von Variablen beim Übergeben eines Kontextobjekts aus einer Ansicht an eine Vorlage beschreiben kann. In der Vorlage verwendete Csrf_token usw. werden durch diesen Mechanismus implementiert.

Erstellen eines Kontextprozessors

Der Kontextprozessor ist als eine Funktion definiert, die ein HTTP-Anforderungsobjekt als Argument verwendet und ein Objekt vom Typ Wörterbuch zurückgibt.

Erstellen Sie die Funktion mit einem beliebigen Namen und erstellen Sie die Datei im Anwendungsverzeichnis.

hogeapp/context_processors.py


def my_context_processor(req):
    return {
        'domain_name': 'https://hogehoge.com',
        'site_name': 'Hogehoge Site',
    }

Im obigen Beispiel wird das Wörterbuchobjekt einfach zurückgegeben, aber der Prozess kann auf die gleiche Weise wie eine normale Funktion beschrieben werden. Sie können dies auch verwenden, um auf eine separat definierte Konstante in einer externen Datei zu verweisen oder den Wert einer Umgebungsvariablen je nach Umgebung zu ändern.

config.py Einstellungen

Um den erstellten Kontextprozessor zu verwenden, müssen Sie ihn in config.py festlegen. Fügen Sie die im vorherigen Abschnitt erstellte Funktion zu context_processors in OPTIONS of TEMPLATES hinzu, die in config.py definiert sind.

config.py


TEMPLATES = [
    {
        'OPTIONS': {
            'context_processors': [
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                'hogeapp.context_processors.my_context_processor', #hinzufügen
            ],
        },
    },
]

So rufen Sie aus einer Vorlage auf

Vom Kontextprozessor hinzugefügte Variablen können innerhalb der Vorlage auf dieselbe Weise wie reguläre Kontextvariablen verwendet werden.

template.html


<link rel="icon" href="{{ domain_name }}/favicon.ico">
<title>{{ site_name }}</title>

Referenz

The Django template language: for Python programmers |Django-Dokumentation| Django https://docs.djangoproject.com/ja/2.2/ref/templates/api/#writing-your-own-context-processors

Recommended Posts

Behandeln Sie Konstanten in Django-Vorlagen
PHP var_dump-like in Django-Vorlage
Modell in Django
Form in Django
Entwerfen von URL-Schemata und Erstellen von Vorlagen in Django
Verarbeiten Sie Signale in C-Sprache
Modelländerungen in Django
Markdown mit Python behandeln
Behandeln Sie Umgebungsdaten in Python
Implementieren Sie die Follow-Funktion in Django
Benennen Sie Tabellenspalten in Django3 um
Behandeln Sie Umgebungsvariablen in Python
Ausgabe der Tabellenstruktur in Django
(Hinweis) Django in Vagrant-Umgebung
Zeigen Sie Django ManyToManyField in der Vorlage
Behandeln Sie komplexe Zahlen in Python
[Django] Lesen von Variablen / Konstanten, die in einer externen Datei definiert sind
Laden Sie die Django-Shell mit ipython neu
Umgang mit Sitzungen in SQLAlchemy
Legen Sie Platzhalter in Eingabefeldern in Django fest
8 häufig verwendete Befehle in Python Django
Fügen Sie in Django dynamisch Formularfelder hinzu
Fehler im Zusammenhang mit Memcached in Django
Behandeln Sie CSV-Dateien mit Django (Django-Import-Export)
Implementierung der Login-Funktion in Django
Registrieren Sie die Django-Anwendung im Projekt
Behandeln Sie Daten in Linux-Bash-Befehlen
Behandeln Sie Posix-Nachrichtenwarteschlangen in Python
Behandeln Sie Daten im NetCDF-Format mit Python
Behandeln Sie das GDS II-Format mit Python
Behandeln Sie Anfragen in einem separaten Prozess
Schreiben Sie externe Schlüsseleinschränkungen in Django
Wie man CSS in Django reflektiert
Wechseln Sie die in Django 1.9 angezeigte Sprache
Stellen Sie Django in 3 Minuten mit Docker-Compose bereit
Pin factory_boy Startwert in Django
GraphQL-API mit graphene_django in Django
Implementierung der Like-Schaltfläche in Django + Ajax
Umgang mit Japanisch mit Python
Holen Sie sich die Abfragezeichenfolge (Abfragezeichenfolge) mit Django
Erstellen Sie mit Django einen LINE-Bot