Django:让render_to_response接受字节而不是磁盘上的html

时间:2015-08-11 20:47:56

标签: python html django django-templates

我有一个即时生成的html文件,我不想保存到磁盘。通常在Django中,要将html提供给用户,请使用:

return render_to_response('foo.html', context_instance=RequestContext(request))

但是,我在磁盘上没有foo.html,我有一个bytes字符串。如何让Django呈现字符串而不是文件? (注意:生成的文件有{% block content %}等等,Django需要解释。

使用python3.4和Django 1.8。

在cyphase的建议中:我做了以下事情:

my_template = Template(byte_string)
return HttpResponse(my_template.render(RequestContext(request)))

1 个答案:

答案 0 :(得分:2)

试试这个:

from django.http import HttpResponse
from django.template import Template

def your_view(...):
    # Do stuff

    yourtemplate = Template(your_template_string)

    content = yourtemplate.render(context_instance=RequestContext(request))

    # content_type and status are the same as would be passed
    # to render() or render_to_response().
    return HttpResponse(content, content_type=None, status=None)

理想情况下,有人会实现一个render_to_response()来获取字符串或类文件对象。