如果我们使用了Django的模板,那么可以在上下文中将实例对象作为响应的一部分返回给浏览器。但是如果我们需要返回将其转化为JSON格式的数据返回给浏览器(比如咱们的restful服务),那么就需要进行序列化了。
序列化,就是将实例对象转换为可传输格式(JSON、XML等)的过程。反序列化则是序列化的反向过程。
Django Rest Framwork通过两个步骤来实现模型的序列化:
1\序列化器充当Django模型与Python原语之间的中介(就像Django模型充当数据库与Python之间的中介一样);
2\解析器和渲染器处理Python原语与http的请求响应之间的编码过程;
渲染器和解析器用于处理HTTP的请求响应与Python原码之间的过程:
– 渲染器用于将响应序列化为特定的媒体类型以通过HTTP进行传输;
– 解析器用于解析传入HTTP请求的内容。
在Django Rest Framwork模块中,所有的渲染器都存在于rest_framework.renderer子模块下
image.png
所有的解析器都存在于rest_framework.parsers子模块下:
image.png
from rest_framework.response import Response
这个Response响应类类似于Django中django.http所提供的HttpResponse响应类,两者的区别在于:
Response响应类使用未经渲染的数据进行初始化返回;
HttpResponse响应类使用经过渲染的字符串进行初始化返回;
超链接模型序列化器——HyperlinkedModelSerializer()。
通过超链接的形式来表示模型之间的关系,并通过url字段与其他模型进行连接。
网友评论