django demande dans le modèle
Question
J'ai activé le processeur de demande de django
TEMPLATE_PROCESSORS = (
"django.core.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.request",
)
Cependant, je ne dois pas demander variable disponible dans les modèles. J'ai passer manuellement. En utilisant django 1.0.2 Partout sur le web, il semble qu'il est seulement activé processeur demande ..
J'utilise aussi RequestContext que:
return render_to_response(
'profile.html',
{
'persons':Person.objects.all(),
'person':Person.objects.get(id=id),
'request':request,
},
context_instance=RequestContext(request)
)
pas de chance
ohh sacrément
le nouveau nom qui est TEMPLATE_CONTEXT_PROCESSORS
La solution
settings.py:
TEMPLATE_CONTEXT_PROCESSORS = (
# ...
'django.core.context_processors.request',
# ...
)
Autres conseils
TEMPLATE_CONTEXT_PROCESSORS au lieu de TEMPLATE_PROCESSORS
Sachez que de Django 1.8, cela a changé un réglage « TEMPLATES », et dans la configuration par défaut, le processeur de requête est non inclus.
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
# insert your TEMPLATE_DIRS here
],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
# Insert your TEMPLATE_CONTEXT_PROCESSORS here or use this
# list if you haven't customized them:
'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',
],
},
},]
Il suffit d'ajouter le processeur de demande de retour pour résoudre le problème:
'django.core.context_processors.request',
Pour plus d'informations, consultez les Django Mise à niveau Docs .
Êtes-vous sûr que vous n'avez pas la variable request
disponible pour le modèle? Qu'est-ce qui se passe lorsque vous supprimez la ligne
'request':request,
qui est différent de quand cette ligne est présente. Si votre modèle charge le même de toute façon, le problème est avec votre modèle.
MIDDLEWARE_CLASSES = ( ... 'Yourfolder.yourfile.yourclass', ... YourClass:
classe AddRequestToTemplate: process_templaet_response (self, demande, réponse): response.context_data [ 'demande'] = demande