render和render_to_string有什么区别?

时间:2019-12-09 13:35:39

标签: python django

目前,我已经引用了在公司的django 1.9版本中创建的一些旧项目,并且发现它们到目前为止已经多次使用render_to_string函数,而现在我正在使用render函数,但是我从未使用过render_to_string。

render_to_string函数的示例代码如下。

return HttpResponse(render_to_string('sales/sale.html', {'sale_id' : sale_id, `unique_number`:uni_id}, RequestContext(request))) 

我试图在线搜索找到答案,但找不到完美的答案。

这两个功能之间的区别是什么?

何时确定最适合在项目中使用的功能?

谢谢。

1 个答案:

答案 0 :(得分:2)

我们可以检查source code of render [GitHub]

def render(request, template_name, context=None, content_type=None, status=None, using=None):
    """
    Return a HttpResponse whose content is filled with the result of calling
    django.template.loader.render_to_string() with the passed arguments.
    """
    content = loader.render_to_string(template_name, context, request, using=using)
    return HttpResponse(content, content_type, status)

本质上,renderrender_to_string(..)template_namecontextrequest作为参数调用using,然后构造一个HttpResponse以及该结果以及可选的content_typestatus。因此,这是结合两者的捷径。