Exemples de comment utiliser le flag debug dans un template sous django. L'objectif ici était de ne pas utiliser certains éléments (comme des pubs) quand le flag DEBUG (dans le fichier settings,py) est réglé sur False par exemple.
Table des matières
Méthode 1
Si seulement quelques pages sont concernées on peut simplement envoyer dans un template le flag DEBUG a partir d'une "view" comme ceci (dans le fichier views.py):
from django.conf import settings
def my_view(request):
debug_flag = settings.DEBUG
context = {'debug_flag':debug_flag}
return render(request, "my_app/my_template.html", context )
On peut alors tester dans le template "my_template.html" si DEBUG est vrai ou faux:
{% if debug_flag %}
do something
{% else %}
do something
{% endif %}
Méthode 2
Une autre solution est d'utiliser un "context processor" pour pouvoir accéder dans tous les templates à la valeur de DEBUG. Dans le fichier processor.py:
from django.conf import settings
def my_context(request):
debug_flag = settings.DEBUG
return{"debug_flag":debug_flag}
Il faut ensuite ajouter dans le fichier settings.py la ligne 'my_app.processor.my_context':
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'my_app.processor.my_context',
],
},
},
]
On peut alors dans tous les templates tester la condition suivante:
{% if debug_flag %}
do something
{% else %}
do something
{% endif %}
Méthode 3
Autre solution avec INTERNAL_IPS dans le fichier settings.py:
INTERNAL_IPS = (
'127.0.0.1',
)
puis dans un template:
{% if debug %}
do something
{% else %}
do something
{% endif %}
Références
Liens | Site |
---|---|
How to check the TEMPLATE_DEBUG flag in a django template? | stackoverflow |
how to check DEBUG true/false in django template - exactly in layout.html | stackoverflow |
How do I get a “debug” variable in my Django template context? | stackoverflow |