在谈论前,先说一下序列化和反序列化,这两个概念最初是在学习json的时候提出来的
序列化就是将对象转化方便传输和存储字节序列,例如json.dumps就是序列化(狭义的序列化,将字典转化为json字符串),这样得到的json字符串不仅直接可以在其他语言使用(跨平台比较好),而且可以在前后端进行传输交互(drf序列化器)
反序列化恰恰相反,而是将字节序列转化为对象,json.loads是将json字符串转化为字典,是狭义的反序列化(因为在python, 一切皆对象,字典是dict( )),而在项目中,前端传过来的序列化数据通过反序列化得到对象,进一步可以通过ORM操作,存入数据库。
read_only(不会存入数据库)
表明该字段仅用于序列化输出,默认False
只显示不写入,默认False, read_only取值的时候显示,存值的时候为空
例如定义序列化器时,id字段通常指定read_only=True
write_only(会存入数据库)
表明该字段仅用于反序列化输入,默认False
write_only存值的时候必须存,取值的时候不显示
例如定义序列化器时,password字段(还有短信验证码等)通常指定write_only=True