zoukankan      html  css  js  c++  java
  • serializer功能

    • ser.serialzers.py
    from rest_framework import serializers
    from user.models import User
    
    def address_validate(data):
          # 独立校验器
          # raise serializers.ValidateionError('请填写实际地址')    # 有错就抛出异常
          # 没错就返回数据
          return data
    
    class UserSerializer(serializers.ModelSerializer):
          # 1.独立校验器,重新设定字段,替换掉模型中的设定,重新设定地址的长度为5
          address = serializers.CharField(max_length=255,min_length=5,validators=[address_validate])
    
          # 2.单一字段验证,验证地址
          def validate_address(self,data):
                if data == '测试':
                      raise serializers.ValidationError('请填写实际地址')      # 有错就抛出异常
                return data  # 没错就返回数据
    
          def validate_phone(self.data):
                # 不符合手机号格式
                # raise serializers.ValidationError('手机号格式不正确')
                model = self.root.Meta.model
                num = model.object.filter(phone=data).count()      
                if num > 0:
                      raise serilazers.ValidationError('手机号已存在')
                return data
    
          # 3.所有属性验证器
          def validate(self,attrs):
                # attrs:{'username':'zhangsan','phone':'12134546789'.....}
                # 所有属性验证器
                # self.context 中有request和view上下文
                # self.context['view'].action 可以取到动作
                # attrs 是需要序列化的数据 
                # raise serializers.ValidationError('xxx错误')      # 有问题报错
                returon attrs   # 没问题返回数据
    
          class Meta:
                model = User
                # fields = ('id',)     # 临时添加字段也需要写到这里
                fields ='__all__'      # 所有字段
                # excluds = ['id']     # 排除ID字段
                read_only_fields = ('',)   # 指定字段为 read_only
                
                # 扩展address extra_kwargs = {}   # 局部替换某些字段的设定,或者新增设定
                extra_kwargs = {
                      'address':{
                              'min_length': 5,  # 给地址增加最小长度限制
                              'default':"默认测试地址",      # 增加默认值
                      }
                }
    
    
    
  • 相关阅读:
    GO語言基礎教程:數組,切片,map
    GO語言視頻教程下載
    GO語言基礎教程:流程控制
    GO語言基礎教程:數據類型,變量,常量
    GO語言基礎教程:Hello world!
    GO語言基礎教程:序章
    騰訊RTX的API開發,給RTX開個天窗
    RTX的api開發實例
    [轉]redis;mongodb;memcache三者的性能比較
    [轉載]史上最强php生成pdf文件,html转pdf文件方法
  • 原文地址:https://www.cnblogs.com/yimeng123/p/13746457.html
Copyright © 2011-2022 走看看