2009-03-31 14 views
19

ho abilitato il processore richiesta di Djangodjango nel modello

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", 
) 

Ancora non ho richiedere variabile disponibile in modelli. Devo passarlo manualmente. Django 1.0.2 ovunque sul web, sembra che è solo circa abilitato richiesta processore ..

Anche io sto usando RequestContext come:

return render_to_response(
    'profile.html', 
    { 
     'persons':Person.objects.all(), 
     'person':Person.objects.get(id=id), 
     'request':request, 
    }, 
    context_instance=RequestContext(request) 
) 

senza fortuna

ohh maledettamente il nuovo nome cioè TEMPLATE_CONTEXT_PROCESSORS

+0

Perché stai lasciando che il modello sappia qualcosa sulla richiesta? – yfeldblum

+2

facile: ho bisogno di conoscere il percorso * URL * della richiesta di navigazione dinamica. ho finito funziona ora. – Attila

risposta

39

settings.py:

TEMPLATE_CONTEXT_PROCESSORS = (
    # ... 
    'django.core.context_processors.request', 
    # ... 
) 
+0

Grazie a Dingo, ho creato un tutorial qui http://wiki.workassis.com/django-accessing-request-object-in-template/ –

+2

Nelle versioni successive di Djano, utilizzare invece: 'django.template.context_processors.request' – shacker

10

TEMPLATE_CONTEXT_PROCESSORS anziché TEMPLATE_PROCESSORS

0

Sei sicuro di non avere la variabile request disponibile per il modello? Cosa succede quando si rimuove la linea

è diverso da quando quella linea è presente. Se il tuo modello carica lo stesso in entrambi i casi, il problema è con il tuo modello.

+0

Per me era che la funzione di elaborazione della richiesta e il contesto di aggiornamento, passato contesto senza la richiesta. La richiesta è stata persa, quindi è stato necessario passarla manualmente alla funzione perché, diversamente da render(), non è stato altrettanto intelligente passare la richiesta. Abbastanza legato a questa risposta. – radtek

0

MIDDLEWARE_CLASSES = ( ... 'yourfolder.yourfile.yourclass', ... yourclass:

classe AddRequestToTemplate: process_templaet_response (auto, richiesta, risposta): response.context_data ['request'] = richiesta

4

Si ricorda che a partire da Django 1.8 , questo è cambiato in un'impostazione "TEMPLATES" e, nella configurazione predefinita, il processore della richiesta NON è incluso.

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', 
     ], 
    }, 
},] 

Basta aggiungere il processore richiesta nuovamente a risolvere il problema:

'django.core.context_processors.request', 

Per ulteriori informazioni, vedere la Django Upgrading Docs.

+0

Sei sicuro che sia disattivato per impostazione predefinita in 1.8? https://github.com/django/django/blob/1.8.6/django/conf/project_template/project_name/settings.py#L63 Ho appena testato il 1.9.6 con 'django-admin startproject' ed è stato anche qui https://github.com/django/django/blob/1.9.6/django/conf/project_template/project_name/settings.py-tpl # L63 –

+0

Ultimo nuovo progetto che ho creato, mancava, ma potrei sbagliarmi .... – MontyThreeCard

Problemi correlati