简介
在 Django 框架基础之上,进行二次开发
用于构建 Restful API
简称为 DRF 框架 或 REST framework
特性
提供了强大的 Serialize 序列化器,可以高效进行序列化与反序列化操作
提供了极为丰富的类视图、Mixin 扩张类、ViewSet 视图集
提供了直观的 Web API 界面
多种身份认证喝权限认证
强大的排序、过滤、分页、搜索、限流等功能
可扩展性,插件丰富
安装与配置
pip install djangorestframework
pip install markdown
在setting.py 配置
INSTALLED_APPS = [
' rest_framework ',
]
在子应用中创建一个 serialize 序列化器
1、继承 Serializer 类或者子类
2、定义的序列化器字段,默认既可以进行序列化输出,也可以进行序列化输入
3、需要在前端输出哪些数据则在序列化器中定义类属性
4、若设置 read_only = True ,指定该字段只能进行序列化输出
5、若设置 write_only = True,则指定该字段只能进行反序列化输入,但不进行序列化输出
6、在序列化器字段定义时,通过 validators 字段选项添加校验器,校验器可以使用restframework 自带的,或者自定义校验器
a、字段校验器的校验顺序:字段定义时的限制(包含validator 列表条目从左到右进行校验)--> 单字段的校验(validate_字段名)--> 多字段联合校验(validate)
b、在序列化器中自定义单字段检验器,命名规则:validate_字段名
c、在序列化器中自定义多字段检验器,命名规则:validate,参数:attrs
7、不在视图对数据库进行增删改查操作,在序列化器中操作定义,
如:在view.py 文件中,如果在创建序列化器对象时,只给data传参,那么调用 serializer.save()实际就是调用序列化对象的 create()
8、保存或更新数据库模型
校验器的调用
单字端校验器
多字段校验器
在序列化器中进行数据库操作
自定义检验器
简化序列化器类的定义,直接继承模型序列器
功能:
基于模型类自动生成一系列字段
基于模型类自动为 Serializer 生成 validators ,比如unique_together
包含默认的 create() 和update()的实现
步骤:
1、在元类中,指定参考哪一个模型类来创建
2、在元类中,指定为模型类的哪些字段,来生成序列化器,field 字段为指定需要哪些模型字段,exclude 字段为指定模型中的哪些字段不需要
3、在元类中,read_only_fields 指定某些模型字段为只输出
4、在元类中,针对某个字段的添加或者修改或包含一些错误信息提示,则需要 extra_kwargs
5、若需要指定某个字段需要检验器,则在元类之前定义
extra_kwargs 字段
在子应用的view 文件中调用序化器
1、通过模型类对象(或者查询集),传给instance参数即可进行序列化操作
2、通过传递 序列化器对象的data属性参数,即可以获取转化之后的字典。总结:传参data 是反序列化,instance 是序列化
3、反序列化器中,检验前端输入的数据,调用序列化器对象的 is_valid ()来检验前端参数
如果检验成功,则返回True,否则校验失败返回False
设置 is_valid() 参数 raise_exception = True ,那么检验失败之后会抛出异常
当调用 is_valid () 后,才可以调用 errors 属性,获取检验失败的错误提示
当校验成功之后的数据,可以使用 validated_data 属性来获取
在创建序列化器对象时,同时给 instance 和 data 传参,那么调用save()会自动调用序列化器对象的update()
序列化器的save()调用
标签:调用,模型,校验,REST,Django,framework,检验,器中,序列化 From: https://www.cnblogs.com/lili37/p/17617767.html