Beim Erstellen einer App mit Django ist es häufig nützlich, Konstanten (Variablen) zu haben, die auf der gesamten Site verwendet werden können.
Zum Beispiel der Text, der auf der gesamten Website angezeigt werden soll, z. B. der Name und die Version der App.
Django verwendet den Kontextprozessor, um die definierten Konstanten abzurufen. Natürlich sind mehrere Einstellungen möglich.
Sanft | Ausführung |
---|---|
Nginx | 1.16.1 |
uWSGI | 2.0.18 |
Python | 3.8.2 |
Django | 3.0.5 |
Dies ist der Weg, um dies in Django 3.0.x zu tun.
Die Vorlage ruft Variablen wie {{variable}}
ab und zeigt sie an, die normalerweise durch die Ansicht geleitet werden. Diese Methode ist ineffizient, da der Prozess der Übergabe von Variablen für jede Anwendung beschrieben werden muss.
test/view.py
def viewFunc(request):
template_name = "template.html"
context = {"variable" : "hello world!"}
return render(request,template_name,context)
Erstellen Sie eine Ansichtsfunktion in der Ansicht Ihrer App und übergeben Sie den Wert als Kontext.
template.html
<p>{{Variablennamen}}</p>
Es wird auf diese Weise in der Vorlage angezeigt.
Durch Erstellen eines Kontextprozessors können Sie Werte / Objekte in der gesamten App übergeben.
app/settings.py
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
os.path.join(BASE_DIR, 'templates'),
],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
…
'mlapp.context_processors.constant_text',, #Füge das hinzu
],
},
},
]
Die Funktion Konstante_text, die wir hinzufügen, erhält den Wert der Vorlage.
app/context_processors.py
def constant_text(request):
return {
'APP_NAME': 'TEST APP',
}
Ich habe "APP_NAME" zu "return" hinzugefügt. Erstellen Sie "context_processors.py" im selben Verzeichnis wie "settings.py".
template.html
<p>{{ APP_NAME }}</p>
Jetzt können Sie die Variablen aus der gesamten App abrufen und in der Vorlage anzeigen. Das ist alles, also ist es einfach.
settings.py
APP_DESCRIPTION='This is a test app.'
Erstellen Sie eine Variable in settings.py
und weisen Sie den Wert zu.
app/context_processors.py
from django.conf import settings
def constant_text(request):
return {
'APP_NAME': 'TEST APP',
'APP_DESCRIPTION': settings.APP_DESCRIPTION,
}
Lesen Sie den Wert aus settings.py
.
template.html
<h1>{{ APP_NAME }}</h2>
<p>{{ APP_DESCRIPTION }}</p>
Auf diese Weise können Sie auch den Wert von "settings.py" verarbeiten.
Es ist sehr leicht.