Django Rest Framework中的Serializer vs Renderer

时间:2019-01-07 05:32:49

标签: django django-rest-framework

我很难注意到django rest框架中的序列化器和渲染器之间的区别。

我认为序列化程序用于将python对象转换为JSON(或其他数据格式)。但是据说渲染器(例如JSONRenders)可以做类似的事情,例如制作(渲染)JSON对象!

你能告诉我两者之间的区别吗?

2 个答案:

答案 0 :(得分:1)

序列化器对任何输出格式一无所知。它只需要您的模型,然后将其转换为python数据结构。然后,渲染器的工作就是以适当的格式输出该数据。

(序列化程序还负责将发布的数据转换回模型实例,并在过程中对其进行验证。)

答案 1 :(得分:0)

序列化器只返回JSON格式的对象。

渲染器具有多种用途的地方

  • JSONRenderer:使用utf-8将请求数据呈现为JSON 编码。
  • TemplateHTMLRenderer:使用Django的将数据渲染为HTML 标准模板渲染。
  • StaticHTMLRenderer:一个简单的渲染器 只是返回预渲染的HTML。
  • BrowsableAPIRenderer:呈现器 数据转换为HTML以便用于Browsable API。
  • AdminRenderer:呈现数据 转换为HTML,以实现类似管理员的显示。
  • HTMLFormRenderer:呈现数据 由序列化程序返回为HTML形式。
  • MultiPartRenderer:此 renderer用于呈现HTML多部分表单数据。

您也可以制作自定义渲染器。

有关详细信息,请参见link