HttpResponse vs. Render

时间:2011-09-04 20:40:04

标签: django http

我正在查看一些代码,并提出了这个问题 - Django: What is the difference b/w HttpResponse vs HttpResponseRedirect vs render_to_response - 讨论了不同类型的请求响应。

是否有理由使用HttpResponse而不是render?如果是这样,这样做的用例和优势是什么?谢谢。

3 个答案:

答案 0 :(得分:12)

render用于表示名称已经指示的内容:呈现模板文件(主要是html,但可以是任何格式)。 render基本上是围绕HttpResponse呈现模板的简单包装器,尽管如前面的答案中所述,您可以使用HttpResponse在响应中返回其他内容,而不仅仅是渲染模板。

答案 1 :(得分:4)

当然,假设您正在进行AJAX调用并想要返回一个JSON对象:

return HttpResponse(jsonObj, mimetype='application/json')

原始问题中接受的答案提到了这种方法。

答案 2 :(得分:0)

渲染(请求,模板名称,上下文=无,内容类型=无,状态=无,使用=无) 这是渲染的参数。它使用模板(template_name),并与给定的上下文字典结合,并返回带有该呈现文本的HttpResponse对象。

注意:即使渲染也返回HttpResponse,但是它可以使用上下文渲染模板(如果字典中的值是可调用的,则视图将在渲染模板之前调用它。)

使用渲染

def view_page(请求):     #在这里查看代码...     返回render(request,'app / index.html',{         '值':'数据',     },content_type ='application / xhtml + xml')

使用HttpResponse

def view_page(请求):     #在这里查看代码...     t = loader.get_template('app / index.html')     c = {'value':'data'}     返回HttpResponse(t.render(c,request),content_type ='application / xhtml + xml')

注意:在HttpResponse下面,我们首先加载模板,然后使用上下文呈现它并发送响应。因此,使用render相当容易,因为它将参数作为template_name和context并将其内部组合。渲染由django.shortcuts

导入