2009-03-31 3 views
19

Я позволил просьбе Джанго процессорДжанго в шаблоне

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

Тем не менее я не запрашивать переменные доступны в шаблонах. Мне нужно передать его вручную. Использование Джанго 1.0.2 Везде на веб кажется, это только включен запрос процессор ..

Также я не я использую RequestContext как:

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

не повезло

ооо штопка новое имя что TEMPLATE_CONTEXT_PROCESSORS

+0

Почему вы позволяете шаблону узнать что-нибудь о запросе? – yfeldblum

+2

easy: мне нужно знать путь * URL * запроса динамической навигации. Я закончен, это работает сейчас. – Attila

ответ

39

settings.py:

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

Спасибо Dingo, у меня есть учебник здесь http://wiki.workassis.com/django-accessing-request-object-in-template/ –

+2

В более поздних версиях Djano используйте вместо этого: 'django.template.context_processors.request' – shacker

0

Вы уверены, что у вас нет переменной request, доступной для шаблона? Что происходит, когда вы удаляете линию

'request':request, 

это отличается от того, когда эта линия присутствует. Если ваш шаблон загружается одинаково в любом случае, проблема связана с вашим шаблоном.

+0

Для меня это была функция обработки запроса и обновления контекста, переданного контекста без запроса. Запрос был потерян, поэтому пришлось сначала передать его функции, потому что в отличие от render() было не так просто передать запрос. Отчасти это связано с этим ответом. – radtek

0

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

класс AddRequestToTemplate: process_templaet_response (самостоятельно, запрос, ответ): response.context_data ['request'] = запрос

4

Сообщайте, что с Django 1.8 , это изменилось на параметр «ШАБЛОНЫ», и в конфигурации по умолчанию процессор запросов НЕ включен.

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

Просто добавьте процессор запрос обратно, чтобы исправить проблему:

'django.core.context_processors.request', 

Для получения дополнительной информации см Django Upgrading Docs.

+0

Вы уверены, что это по умолчанию в 1.8? https://github.com/django/django/blob/1.8.6/django/conf/project_template/project_name/settings.py#L63 Я оправдал тестирование на 1.9.6 с помощью 'django-admin startproject', и это было там также https://github.com/django/django/blob/1.9.6/django/conf/project_template/project_name/settings.py-tpl # L63 –

+0

Последний новый проект, который я установил, его не хватало, но я мог ошибаться .... – MontyThreeCard

Смежные вопросы