Django-cms render_to_response 不渲染到模板

Django-cms render_to_response doesn't render to template

我正在使用 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 这样的事情:

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

)

那么,我该怎么办?

查看上下文变量有哪些。它应该有这样的东西:

示例:

from django.template import RequestContext

def view(request):
   ...

   return render_to_response(
                "project_pages.html",
                {'data':data}, 
                context_instance=RequestContext(request),                   
           ) 

我想通了。

在这个模板中,我有一些信息,当用户按下按钮将一些信息提交给 django 进行处理时,我不想丢失这些信息,所以我在 javascript 中创建了一个函数,允许提交但不刷新页面。 没有刷新,内容保持静态,响应中的数据变量不会发送到模板

来这里寻找 django 1.8 或更高版本的人应该使用下面的代码。 现在,如果您正在编写自定义视图,则模板上下文处理器不会直接从 setting.py 文件中选取。

使用下面的代码使其工作:

from sekizai.context import SekizaiContext

def view(request):
...


    return render_to_response('template.html', 
                            SekizaiContext(request, {'data': data}))