Je suis arrivé à un point où j'ai besoin de transmettre certaines variables à toutes mes vues (principalement des variables de type d'authentification personnalisées).créer mon propre processeur de contexte dans django
On m'a dit que l'écriture de mon propre processeur de contexte était la meilleure façon de le faire, mais j'ai quelques problèmes.
Mon fichier de paramètres ressemble à ce
TEMPLATE_CONTEXT_PROCESSORS = (
"django.contrib.auth.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.contrib.messages.context_processors.messages",
"sandbox.context_processors.say_hello",
)
Comme vous pouvez le voir, j'ai un module appelé « context_processors » et une fonction au sein de cette appelée « say_hello ».
qui ressemble
def say_hello(request):
return {
'say_hello':"Hello",
}
Ai-je raison de supposer que je peux maintenant faire ce qui suit dans les mon point de vue?
{{ say_hello }}
En ce moment, ce qui rend à rien dans mon modèle.
Mon point de vue ressemble
from django.shortcuts import render_to_response
def test(request):
return render_to_response("test.html")
La 'context_instance' est ce qui manquait! Merci TM – dotty
Suivi, pourquoi j'ai besoin de context_instance? Comment se fait-il que je n'en ai pas besoin si j'utilise le système d'authentification de django? – dotty
Les vues intégrées de Django gèrent cela pour vous (elles utilisent un 'RequestContext'). Pensez au processeur de contexte que vous avez créé. Il prend 'request' comme argument. Cela signifie que vous devez en quelque sorte donner la requête en cours à la logique de rendu. 'RequestContext' gère simplement la logique simple de boucler à travers tous les processeurs de contexte et de leur passer la requête courante, puis de mettre à jour le contexte de la page avec les résultats. –