HttpResponse vs. Render

Dav*_*542 12 django http

我正在查看一些代码并得出这个问题 - Django:有什么区别b/w HttpResponse vs HttpResponseRedirect vs render_to_response - 它讨论了不同类型的请求响应.

是否有过一个理由使用HttpResponserender?如果是这样,这样做的用例和优势是什么?谢谢.

Tor*_*cht 14

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

  • 嗯,答案大多已经说过了.Django正在使用模板(模板文件,例如html模板).`render`快捷方式将模板名称作为参数,然后使用给定的参数呈现此模板,然后返回带有渲染体的`HttpResponse`.`HttpResponse`代替了名称所指示的,处理HTTP响应.它不会做Django在调用render时在幕后做的事情.如果你想要返回一个渲染的Django模板,你需要手动完成这个并在返回之前将结果传递给`HttpResponse`. (4认同)
  • 我希望你能多解释一点,那会很棒。 (3认同)

Abi*_*d A 7

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

return HttpResponse(jsonObj, mimetype='application/json')
Run Code Online (Sandbox Code Playgroud)

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