restframework

前后端不分离与分离的区别
不分离:视图返回的数据包括数据库中的数据、html标签
分离:视图返回的数据只包括数据库中的数据,而且格式为json
RESTful规范
操作处理----请求方式----路径----返回值----状态码
以英雄为例
处理 请求方式 路径 返回值 状态码
查询(多条) get /heros/ [{},{},…] 200
查询(一条) get /heros/(?P\d+)/ {} 200
增加 post /heros/ 新建的英雄{} 201
修改 put /heros/(?P\d+)/ 修改后的英雄{} 201
删除 delete /heros/(?P\d+)/ 无 204
序列化
将对象转换成字典
实现步骤
1.定义序列化器类型,根据模型类定义
2.定义属性及类型,对应模型类的属性
3.创建序列化器对象,以模型类对象为参数
4.调用data属性获取字典

今天知识点

关系属性序列化
反序列化:验证,保存
模型类序列化器
Request对象
Response对象
关系属性序列化

1.输出主键serializers.PrimaryKeyRelatedField(read_only=True)
2.输出字符串serializers.StringRelatedField(read_only=True)
3.自定义序列化器
说明1:关系属性必须指定read_only=True
说明2:在一端的关系属性中,需要指定many=True
反序列化:验证,保存

验证

调用
1.新建序列化器对象,以请求报文中接收的字典为参数
2.调用is_valid()
3.返回True表示验证成功,通过validated_data获取验证后的数据
4.返回False表示验证失败,通过errors获取错误信息
is_valid()方法内部的功能:
1.类型验证
2.参数验证
3.自定义验证方法
validate_属性名称()=>为单个属性提供验证
validate()
==》为多个属性提供验证
参数validators(不常用)
保存

调用:serializer.save()
在序列化器类型中定义create()方法,实现创建对象的功能
在序列化器类型中定义update()方法,实现修改对象的功能
区分:创建还是修改,关键在于创建序列化器对象
创建:serializer = BookSerializer(data=param_dict)
修改:serializer = BookSerializer(book, data=param_dict)
模型类序列化器

定义类,继承自Serializer,编写代码包括:
定义属性
指定类型
设置参数验证
定义方法验证
定义create()、update()方法
ModelSerializer,继承自Serializer,封装了如下代码:
定义属性
指定类型
定义create()、update()方法
需要自己实现的代码:
设置参数验证
定义方法验证
使用ModelSerializer的前提:必须有模型类
序列化器小结

将原来写在视图中的代码进行了封装
将对象转换成字典的代码===》序列化
验证数据的代码==========》反序列化的验证
创建、修改对象的代码====》反序列化的保存
序列化:
定义序列化器类型:属性,类型
在视图中创建对象,以模型类对象为参数
调用serializer.data===>返回字典
关系属性的输出方案:主键(默认),字符串,自定义序列化器
反序列化:
定义序列化器类型:属性,类型,验证参数,验证方法,create(),update()
在视图中创建对象,以请求报文数据为参数data=***
调用is_valid()方法进行验证
调用save()方法进行保存
如果创建对象时未传递模型类对象则调用create()方法
如果创建对象时传递模型类对象则调用update()方法
对比:Serializer,ModelSerializer
继承自Serializer,需要定义:属性,类型,验证参数,验证方法,create(),update()
继承自ModelSerializer,内部继承自Serializer,需要定义:验证参数,验证方法
提前:必须有模型类,才可以使用ModelSerializer
使用序列化器的三种情况:
将对象转字典
验证接收的数据
保存接收的数据
Request对象

继承自django的request对象
新属性:
data:接收json数据,类型为字典
query_params:接收查询参数,类型为字典
其它属性可以继续使用,如COOKIES,session,user
Response对象

继承自django的response对象
新增功能:
直接接收字典、列表
提供了接口页面
其它属性可以继续使用,如set_cookie()
总结

重要知识点

序列化:将对象转换成字典
serializer=***Serializer(模型类对象)
serializer.data===>字典
关系属性的输出方式:主键,字符串,自定义序列化器
反序列化
验证:serializer.is_valid()
属性的类型
参数
验证方法:validate_属性(),validate()
保存:serializer.save()
判断:是否有模型类对象
如果有则调用update()
如果无则调用create()
Serializer、ModelSerializer

能够使用序列化器序列化模型对象
1.定义序列化器类型,指定需要输出的属性
2.serializer=***Serializer(模型类对象)
3.dict1=serializer.data
能够使用序列化器校验数据
1.定义序列化器,定义验证的内容:类型,参数,方法(2种)
2.serializer=***Serializer(data=请求报文数据)
3.serializer.is_valid()
4.serializer.validated_data
5.serializer.errors
能够使用序列化器保存校验后的数据
创建:
serializer=***Serializer(data=请求数据)
***=serializer.save()
修改:
serializer=***Serializer(模型类对象,data=请求数据)
***=serializer.save()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值