2009-05-06 6 views

Répondre

22

Le RequestContext initialiseur se déroulera tous les processeurs de contexte répertoriés dans le fichier de configuration, mais il prend également une liste de processeurs supplémentaires à exécuter. Tous les processeurs de contexte à usage général peuvent être mis dans settings.py et des processeurs plus spécifiques peuvent être ajoutés au 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'}) 
+0

cela semble être la meilleure réponse à moi – Rasiel

+0

Oui, je l'ai changé parce que le peu de processeurs supplémentaires était ce que j'étais vraiment après. – rennat

1

Vous pouvez filtrer les vues utilisent effectivement les processeurs de contexte que de passer RequestContext(request) seulement à 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'}) 
+0

Je pense que cela va travailler pour cette situation particulière, mais en essayant de penser plus ici: si j'avais 3 ou 4 fonctions du processeur de contexte qui ont été nécessaires par des vues au hasard, à ce moment-là que je devrais juste les importer et appelez-les dans les vues qui en ont besoin? Parce que les processeurs de contexte sont une sorte de chose tout ou rien, n'est-ce pas? – rennat

+3

À droite, les processeurs de contexte dans settings.py sont tous ou aucun avec RequestContext. Une façon plus flexible de le faire serait de sous-classer RequestContext pour chaque ensemble de processeurs que vous voulez et d'y placer les processeurs de contexte, de sorte que vous puissiez avoir SidebarContext et CommentsContext, etc. Cela sortirait également les processeurs de contextes de settings.py, ce qui Rendez-les plus spécifiques aux applications, ce qui est préférable si vous avez de nombreuses applications utilisant des processeurs de contexte. Donc, vous auriez juste besoin d'un bon moyen de les enchaîner ... – tghw

Questions connexes