【问题标题】:Serializer vs Renderer in Django Rest FrameworkDjango Rest 框架中的序列化器与渲染器
【发布时间】:2019-01-07 05:32:49
【问题描述】:

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

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

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

【问题讨论】:

    标签: django django-rest-framework


    【解决方案1】:

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

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

    【讨论】:

    • 嗯..这句话我没看懂; '它只是将你的模型转换成 python 数据结构' 在这里,即使在转换发生之前,模型不应该也是 python 对象吗?它是python对象以外的数据吗? django 不处理 python 中的模型吗?
    • @rhee 我认为 OP 意味着序列化器会将 python 对象(模型类的实例)转换为原生 python 数据类型。也就是说,无需导入模型文件即可被另一个 Python 脚本理解的格式。
    【解决方案2】:

    序列化器只是简单地转换成 python 数据结构。

    渲染器有多种用途

    • JSONRenderer:将请求数据渲染成 JSON,使用 utf-8 编码。
    • TemplateHTMLRenderer:使用 Django 将数据渲染为 HTML 标准模板渲染。
    • StaticHTMLRenderer:一个简单的渲染器 它只返回预渲染的 HTML。
    • BrowsableAPIRenderer:渲染 可浏览 API 的 HTML 数据。
    • AdminRenderer:渲染数据 转换成 HTML 以进行类似管理员的显示。
    • HTMLFormRenderer:渲染数据 由序列化程序返回到 HTML 表单中。
    • MultiPartRenderer:这个 renderer 用于渲染 HTML 多部分表单数据。

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

    有关详细信息,请参阅link

    【讨论】:

    • 序列化程序不会转换为 JSON。
    猜你喜欢
    • 1970-01-01
    • 2015-06-29
    • 1970-01-01
    • 1970-01-01
    • 2020-03-22
    • 2015-10-29
    • 2020-05-08
    • 2016-11-22
    • 2018-12-13
    相关资源
    最近更新 更多