Python 渲染和渲染的区别是什么;渲染到字符串?

Python 渲染和渲染的区别是什么;渲染到字符串?,python,django,Python,Django,目前,我引用了我公司django 1.9版本中创建的一些旧项目,我发现他们多次使用render_to_字符串函数,现在我正在使用render函数,但我从未使用render_to_字符串 render_to_string函数的示例代码如下所示 return HttpResponse(render_to_string('sales/sale.html', {'sale_id' : sale_id, `unique_number`:uni_id}, RequestContext(request)))

目前,我引用了我公司django 1.9版本中创建的一些旧项目,我发现他们多次使用render_to_字符串函数,现在我正在使用render函数,但我从未使用render_to_字符串

render_to_string函数的示例代码如下所示

return HttpResponse(render_to_string('sales/sale.html', {'sale_id' : sale_id, `unique_number`:uni_id}, RequestContext(request))) 
我试着在网上搜索答案,但找不到任何完美的答案

这两种功能的区别是什么?它们的行为如何

何时决定哪个功能最适合在项目中使用

谢谢

我们可以检查:

def render(请求、模板名称、上下文=无、内容类型=无、状态=无、使用=无):
"""
返回一个HttpResponse,其内容由调用的结果填充
django.template.loader.render_to_string()和传递的参数。
"""
content=loader.render_to_string(模板名称、上下文、请求、using=using)
返回HttpResponse(内容、内容类型、状态)

本质上,
render
使用
template\u name
context
request
作为参数调用
render\u to\u string(..)
,然后使用该结果和可选的
内容类型和
状态构建一个
HttpResponse
。因此,这是一个将两者结合在一起的快捷方式。

render_to_string
将其呈现为字符串,而
render
将其包装在
HttpResponse
中。中有什么不清楚的地方?您的示例将无法使用Django 1.10+(您必须替换
RequestContext(request)
带有
request
。由于您需要更新代码,因此将
HttpResponse(render\u to\u string(…)
替换为
render(…)将更具可读性
在那一点上。那么如何决定何时使用render或render_to_string呢?@Moon:如果你想生成一个
HttpResponse
,那么通常你使用
render
,当你不打算做出响应时使用
render_to_string
。例如,为电子邮件提供一个模板,模板的一个子部分,等等。谢谢@Willem,我还将render和render_到_字符串的返回值临时分配到两个不同的变量中,并能够找出这两个变量之间的差异。
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)