Django-cms render_to_response不会渲染到模板

时间:2015-08-06 15:14:29

标签: python django django-cms render-to-response django-sekizai

我正在研究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 个答案:

答案 0 :(得分:2)

查看上下文变量的内容。应该有类似的东西:

示例:

from django.template import RequestContext

def view(request):
   ...

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

答案 1 :(得分:1)

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

使用以下代码使其正常工作:

from sekizai.context import SekizaiContext

def view(request):
...


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

答案 2 :(得分:0)

我发现了。

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