Django, un modèle de contexte processeurs
J'ai un problème bizarre, je veux ajouter une requête globale à l'aide de contexte processeurs.
C'est la façon dont je l'ai fait par la suite:
fait une processor.py dans mon application en tant que telle:
from myproject.myapp.models import Foo
def foos(request):
return {'foos': Foo.objects.all()}
et à la fin de mon setting.py j'ai ajouté ceci:
TEMPLATE_CONTEXT_PROCESSORS = ('myapp.processor.foos',)
Enfin je passe mon point de vue ceci:
def index_view(request):
return render_to_response('index.html', {}, context_instance=RequestContext(request))
et à mon index.html modèle:
<select id="select_foo">
{% for foo in foos %}
<option value="/{{ foo.slug }}">{{ foo.name }}</option>
{% endfor %}
</select>
Et enfin mon url:
(r'^$', 'myapp.views.index_view'),
Mon totos d'affichage sans aucun problème, en revanche mon media_url et d'autres contextes sont partis.
Quel peut être le problème
Vous devez vous connecter pour publier un commentaire.
Lorsque vous spécifiez ce:
Dans votre fichier de paramètres, vous écrasez la Django contexte par défaut processeurs. Afin de étendre la liste, vous devez inclure par défaut dans vos paramètres:
Remarque, les paramètres ci-dessus sont les valeurs par défaut (en plus de votre processeur) pour django 1.1.
settings.py
.django.contrib.auth.context_processors.auth
Vous devez ajouter les valeurs par défaut de TEMPLATE_CONTEXT_PROCESSORS. Cependant, au lieu de coder en dur ces valeurs, qui sera lié à une version spécifique de Django, vous pouvez ajouter votre contexte du processeur pour les valeurs par défaut par le texte suivant:
Assurez-vous d'inclure la virgule dans le tuple, de sorte que Python reconnaît comme un n-uplet.
settings.py
?from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS
etTEMPLATES = [ { # … 'OPTIONS': { 'context_processors': TEMPLATE_CONTEXT_PROCESSORS + ( 'mymod.context_processors.some_processor', ), }, }, ]
fonctionne toujours, maisTEMPLATE_CONTEXT_PROCESSORS
aura disparu dans l'avenir.+ [ "myapp.processor.foos" ]
TEMPLATES['OPTIONS']['context_processors']
donc il n'y a pas de haut-niveau de la variable qui définit etglobal_settings
ne contient pas non plus.Ici ce qui a fonctionné pour moi pour Django 1.3