我正在查看一些代码,并提出了这个问题 - Django: What is the difference b/w HttpResponse vs HttpResponseRedirect vs render_to_response - 讨论了不同类型的请求响应。
是否有理由使用HttpResponse
而不是render
?如果是这样,这样做的用例和优势是什么?谢谢。
答案 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')
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
导入