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}))
我正在使用 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}))