Lors de la création d'une application avec Django, il est souvent utile d'avoir des constantes (variables) utilisables sur tout le site.
Par exemple, le texte à afficher sur tout le site, tel que le nom et la version de l'application.
Django utilise le processeur de contexte pour récupérer les constantes définies. Bien entendu, plusieurs réglages sont possibles.
doux | version |
---|---|
Nginx | 1.16.1 |
uWSGI | 2.0.18 |
Python | 3.8.2 |
Django | 3.0.5 |
C'est la manière de le faire dans Django 3.0.x.
Le modèle obtient et affiche des variables telles que «{{variable}}», qui sont généralement transmises via la vue. Cette méthode est inefficace car il est nécessaire de décrire le processus de transmission des variables pour chaque application.
test/view.py
def viewFunc(request):
template_name = "template.html"
context = {"variable" : "hello world!"}
return render(request,template_name,context)
Créez une fonction d'affichage dans la vue de votre application et transmettez la valeur en tant que contexte.
template.html
<p>{{Nom de variable}}</p>
Il sera affiché dans le modèle de cette manière.
En créant un processeur de contexte, vous pouvez transmettre des valeurs / objets dans toute l'application.
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',, #Ajoute ça
],
},
},
]
La fonction appelée constant_text que nous ajouterons obtiendra la valeur du modèle.
app/context_processors.py
def constant_text(request):
return {
'APP_NAME': 'TEST APP',
}
ʻAPP_NAMEest ajouté à la place de
return. Créez
context_processors.py dans le même répertoire que
settings.py`.
template.html
<p>{{ APP_NAME }}</p>
Vous pouvez maintenant obtenir les variables de l'ensemble de l'application et les afficher dans le modèle. C'est tout, donc c'est facile.
settings.py
APP_DESCRIPTION='This is a test app.'
Créez une variable dans settings.py
et attribuez la valeur.
app/context_processors.py
from django.conf import settings
def constant_text(request):
return {
'APP_NAME': 'TEST APP',
'APP_DESCRIPTION': settings.APP_DESCRIPTION,
}
Lisez la valeur de settings.py
.
template.html
<h1>{{ APP_NAME }}</h2>
<p>{{ APP_DESCRIPTION }}</p>
En faisant cela, vous pouvez également gérer la valeur de settings.py
.
C'est très facile.