Django-cms render_to_response не отображается в шаблоне
Я работаю над проектом в Django 1.5.12. версия с установленным django-cms. У меня есть файл, сгенерированный командой "pip freeze> frozen.txt", где находится следующая информация с тем, что я установил:
Django==1.5.12
MySQL-python==1.2.5
South==1.0.2
argparse==1.2.1
distribute==0.6.24
django-classy-tags==0.6.2
django-cms==2.4.3
django-mptt==0.5.2
django-sekizai==0.8.2
html5lib==1.0b7
six==1.9.0
wsgiref==0.1.2
Ну, моя проблема в том, что у меня есть приложение в моем проекте, где у меня есть следующий код в views.py:
from django.shortcuts import *
def test(request):
data = {'test 1': [ [1, 10] ], 'test 2': [ [1, 10] ],'test 3':[ [2,20]] }
print data # to see if function works
return render_to_response("project_pages.html",{'data':data},context)
И в моем шаблоне project_pages.html у меня есть это:
<table>
<tr>
<td>field 1</td>
<td>field 2</td>
<td>field 3</td>
</tr>
{% for author, values in data.items %}
<tr>
<td>{{author}}</td>
{% for v in values.0 %}
<td>{{v}}</td>
{% endfor %}
</tr>
{% endfor %}
</table>
и не рендерит ответ на шаблон. И в терминале не показывает никаких ошибок. Функция работает, потому что это печать данных.
Если попытаться вернуть что-то вроде этого:
return render_to_response("project_pages.html",{'data':data})
без контекста в конце (это другой вызов) это дает мне следующую ошибку:
"You must enable the 'sekizai.context_processors.sekizai' template "
TemplateSyntaxError: You must enable the 'sekizai.context_processors.sekizai' template context processor or use 'sekizai.context.SekizaiContext' to render your templates.
В моем settings.py у меня есть sekizai:
TEMPLATE_CONTEXT_PROCESSORS = (
'django.contrib.auth.context_processors.auth',
'django.core.context_processors.i18n',
'django.core.context_processors.request',
'django.core.context_processors.media',
'django.core.context_processors.static',
'cms.context_processors.media',
'sekizai.context_processors.sekizai',
'sekizai.context.SekizaiContext',
)
И что же мне делать?
3 ответа
Проверьте, какая переменная контекста есть. Должно быть что-то вроде этого:
Пример:
from django.template import RequestContext
def view(request):
...
return render_to_response(
"project_pages.html",
{'data':data},
context_instance=RequestContext(request),
)
Для людей, приезжающих сюда для поиска django 1.8 или более поздней версии, следует использовать приведенный ниже код. Теперь процессор контекста шаблона не выбирается из файла setting.py direclty, если вы пишете пользовательские представления.
используйте код ниже, чтобы заставить его работать:
from sekizai.context import SekizaiContext
def view(request):
...
return render_to_response('template.html',
SekizaiContext(request, {'data': data}))
Я понял.
В этом шаблоне у меня есть некоторая информация, которую я не хочу потерять, когда пользователь нажимает кнопку, чтобы отправить некоторую информацию для обработки в django, поэтому я создал функцию в javascript, которая позволяет отправлять, но не обновляет страницу. Без обновления содержимое остается статичным, а переменная данных из ответа не отправляется в шаблон