我所知道的是JSONResponse是具有content_type =“ application / JSON”的HttpResponse JSONRenderer会将python字典数据转换为JSON格式 他们做同样的工作吗?或者它们之间有什么区别。
我已经阅读了JSONParser和JSONRenderer之间的区别,但这并不能真正解决我的问题
答案 0 :(得分:0)
JSONResponse和JSONRenderer非常相似,并且执行大致相同的操作。两种格式的服务器响应都使用JSON,但是用法不同。
两者都通过使用json.dumps
将纯Python数据转换为JSON格式,并将输出发送回客户端。有关代码,请参见JSONRenderer source和JSONResponse source。
就它们的区别而言,通用Django中的view方法应返回JSONResponse,以发送标头为Content-Type: application/json
的数据。另一方面,在Django Rest Framework中使用JSONRenderer将序列化的数据格式化为JSON格式,具体取决于接收到的请求中的accept
标头。查看Django请求响应文档(https://docs.djangoproject.com/en/2.1/ref/request-response/)或DRF渲染器(http://www.django-rest-framework.org/api-guide/renderers/)上的文档,以获取更多用法。
作为示例,可以像这样使用JSONResponse:
def some_view(request):
data = get_data()
return JSONResponse(data)
settings.py
中JSONRenderer的用法:
REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': (
'rest_framework.renderers.JSONRenderer', 'rest_framework.renderers.BrowsableAPIRenderer'
)
}
以上内容将根据请求的accept
标头,使用Django Rest Framework以JSON格式呈现路由的响应数据。