Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Templates context processors

0 votes

Je voudrais savoir quel est le moyen exact d'obtenir la liste des templates context processors actuellement disponible dans un projet Django (ceux par defauts, et ceux customs).

Tout fonctionne correctement, durant l'execution, mes templates context processors customs sont bien vus et executés par Django.

Par contre, dans le shell, comment faire pr les voirs? Voici ce que j'ai essayé. En affichant settings.TEMPLATE_CONTEXT_PROCESSORS, je suis surpris de ne voir que ceux par defaut.

(dj19) >>> print(settings.TEMPLATE_CONTEXT_PROCESSORS)
['django.contrib.auth.context_processors.auth', 'django.template.context_processors.debug', 'django.template.context_processors.i18n', 'django.template.context_processors.media', 'django.template.context_processors.static', 'django.template.context_processors.tz', 'django.contrib.messages.context_processors.messages']
(dj19) >>> from django.conf import global_settings
(dj19) >>> print(global_settings.TEMPLATE_CONTEXT_PROCESSORS)
['django.contrib.auth.context_processors.auth', 'django.template.context_processors.debug', 'django.template.context_processors.i18n', 'django.template.context_processors.media', 'django.template.context_processors.static', 'django.template.context_processors.tz', 'django.contrib.messages.context_processors.messages']
(dj19) >>> 

Et celui que j'ai ecrit, 'utils.context_processors.shows' n'apparait pas ds la liste du dessus:

(dj19) >>> from django.conf import settings
(dj19) >>> print(settings.TEMPLATES[0]['OPTIONS'])
{'context_processors': ['utils.context_processors.shows', 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages']}

Peut etre, ne sont ils chargés qu'à l'execution d'une requete?

demandé 31-Mai-2016 par Nsukami_ (1,998 points)

3 Réponses

0 votes

... sinon tu peux utiliser la django-debug-doolbar qui présente les context processors dans l'onglet "Gabarits"

répondu 31-Mai-2016 par frague (662 points)
+1 vote

Heu... je crois que tu interroges la liste des context_processors définis par défaut de django, et non ceux de ton instance. Tu dois peut-être fare un :

import django
django.setup()
from django.conf import settings
print (settings.TEMPLATE_CONTEXT_PROCESSORS)

(Si tu es en django 1.9, les settings des TEMPLATES a changé, ça serait :

import django
django.setup()
from django.conf import settings
print (settings.TEMPLATES['OPTIONS]['context_processors'])
répondu 31-Mai-2016 par frague (662 points)
0 votes

Lance la commande diffsettings pour voir les settings que tu as définis toi même.

python manage.py diffsettings
répondu 31-Mai-2016 par ivoire (198 points)
...