Django HttpResponse与Render

Django HttpResponse与Render,django,http,Django,Http,我看了一些代码,然后问了这个问题-,它讨论了不同类型的请求-响应 是否有理由在render上使用HttpResponse?如果是这样,那么这样做的用例和优势是什么?谢谢。当然,假设您正在进行一个AJAX调用,并希望返回一个JSON对象: return HttpResponse(jsonObj, mimetype='application/json') 原始问题中被接受的答案暗示了这种方法。render用于表示名称已经指明的内容:呈现模板文件(主要是html,但可以是任何格式)render基本上

我看了一些代码,然后问了这个问题-,它讨论了不同类型的请求-响应


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

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

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

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

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

这是render的参数。它采用模板(template_name)并与给定的上下文字典相结合,并返回带有该呈现文本的HttpResponse对象

render(request, template_name, context=None, content_type=None, status=None, using=None)
即使render返回HttpResponse,但它也可以使用上下文呈现模板(如果字典中的值是可调用的,视图将在呈现模板之前调用它)


在下面的HttpResponse中,我们首先加载模板,然后使用上下文呈现它并发送响应。因此,使用render非常简单,因为它将参数作为模板名称和上下文,并在内部组合它们。render由django导入。快捷方式

Abid涵盖了它,
render
通常用于加载模板和上下文,而
HttpResponse
通常用于数据。因为用html“响应”是不好的做法。Render本质上是HttpResponse的一个缩写,它提供了一种更有效的方法来修改模板和动态加载数据。我希望你能多解释一点,那就太棒了。嗯,答案主要是说它已经存在了。Django正在使用模板(模板文件,例如html模板)。
render
快捷方式将模板名称作为参数,然后使用给定参数呈现此模板,然后使用呈现的主体返回一个
HttpResponse
HttpResponse
只处理名称所指示的HTTP响应。它不会像Django在调用render时在幕后所做的那样,如果您想返回渲染的Django模板,则需要手动执行此操作,并在返回之前将结果传递给
HttpResponse
。感谢您抽出时间。
#With render
def view_page(request):
    # View code here...
    return render(request, 'app/index.html', {
        'value': 'data',
    }, content_type='application/xhtml+xml')

#with HttpResponse
def view_page(request):
    # View code here...
    t = loader.get_template('app/index.html')
    c = {'value': 'data'}
    return HttpResponse(t.render(c, request), content_type='application/xhtml+xml')