Quand est-il approprié d'utiliser des processeurs de contexte Django?
-
06-07-2019 - |
Question
Si environ la moitié de mes vues requièrent le même ensemble de données, est-il approprié d'utiliser un processeur de contexte pour rendre les données toujours disponibles ou existe-t-il un meilleur moyen d'éviter de répéter le code pour obtenir ces données sur plusieurs vues sans interroger les données si elles ne seront pas utilisées dans la vue?
La solution
L'initialiseur RequestContext
exécutera tous les processeurs de contexte répertoriés dans le fichier de paramètres, mais il faudra également une liste de processeurs supplémentaires à exécuter. Tous les processeurs de contexte à usage général peuvent être placés dans settings.py et des processus plus spécifiques peuvent être ajoutés à RequestContext
au cas par cas.
Laissez RequestContext
complètement pour ne pas exécuter de processeurs de contexte.
# want context processors listed in settings.py as well as some more specific ones
return render_to_response('template.html', {'foo':'bar'}, context_instance=RequestContext(request, processors = extra_processors))
# want only context processors listed in settings.py
return render_to_response('template.html', {'foo':'bar'}, context_instance=RequestContext(request))
# no context processors
return render_to_response('template.html', {'foo':'bar'})
Autres conseils
Vous pouvez filtrer les vues qui utilisent réellement des processeurs de contexte en transmettant uniquement RequestContext (demande)
uniquement à ceux qui en ont besoin, par exemple:
# want context processors
return render_to_response('template.html', {'foo':'bar'}, context_instance=RequestContext(request))
# no context processors
return render_to_response('template.html', {'foo':'bar'})