序列化组件的一些细节
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | 1 写一个序列化的类,继承Serializer 2 在类中写要反序列化的字段,想反序列化哪个字段,就在类中写哪个字段,字段的属性(max_lenth......) max_length 最大长度 min_lenght 最小长度 allow_blank 是否允许为空 trim_whitespace 是否截断空白字符 max_value 最小值 min_value 最大值 3 在视图类中使用,导入 - - 》实例化得到序列化类的对象,把要要修改的对象传入,修改的数据传入 boo_ser = BookSerializer(book,request.data) boo_ser = BookSerializer(instance = book,data = request.data) 4 数据校验 if boo_ser.is_valid() 5 如果校验通过,就保存 boo_ser.save() # 注意不是book.save() 6 如果不通过,逻辑自己写 7 如果字段的校验规则不够,可以写钩子函数(局部和全局) # 局部钩子 def validate_price( self , data): # validate_字段名 接收一个参数 #如果价格小于10,就校验不通过 # print(type(data)) # print(data) if float (data)> 10 : return data else : #校验失败,抛异常 raise ValidationError( '价格太低' ) # 全局钩子 def validate( self , validate_data): # 全局钩子 print (validate_data) author = validate_data.get( 'author' ) publish = validate_data.get( 'publish' ) if author = = publish: raise ValidationError( '作者名字跟出版社一样' ) else : return validate_data 8 可以使用字段的author = serializers.CharField(validators = [check_author]) ,来校验 - 写一个函数 def check_author(data): if data.startswith( 'sb' ): raise ValidationError( '作者名字不能以sb开头' ) else : return data - 配置:validators = [check_author] |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!