DRF反序列化时数据验证完毕返回的是None值

文章目录

错误复现

serializers.py

bash 复制代码
class LoginSerializer(serializers.Serializer):

    username = serializers.CharField(min_length=5, max_length=10, help_text="账号")
    password = serializers.CharField(min_length=5, max_length=10, help_text="密码")

    # 校验用户名
    def validate_username(self, value):
        if not re.match(r'^[a-zA-Z0-9_-]{5,10}$', value):
            raise serializers.ValidationError("请输入5-20的用户名!")

    # 校验密码
    def validate_password(self, value):
        if not re.match(r'^[a-zA-Z0-9_-]{6,10}$', value):
            raise serializers.ValidationError("请输入6-20的密码!")

view.py

bash 复制代码
class LoginGenericAPIView(GenericAPIView):

    queryset = User.objects.all()
    serializer_class = LoginSerializer

    permission_classes = [AllowAny]

    def post(self, request):
        # 获取序列化器
        serializer = self.get_serializer(data=request.data)
        print(request.data)
        # 验证数据
        if not serializer.is_valid():
            return Response(serializer.errors)

        print(serializer)
        print(serializer.data)
        return Response(serializer.data)

错误

请求可以获取到value但是验证完毕数据一直为None

解决方案

一定不要像我一样粗心

bash 复制代码
validate_<field_name>验证完毕没有返回Value

正确的代码

bash 复制代码
class LoginSerializer(serializers.Serializer):

    username = serializers.CharField(min_length=5, max_length=10, help_text="账号")
    password = serializers.CharField(min_length=5, max_length=10, help_text="密码")

    # 校验用户名
    def validate_username(self, value):
        if not re.match(r'^[a-zA-Z0-9_-]{5,10}$', value):
            raise serializers.ValidationError("请输入5-20的用户名!")
        return value
    
    # 校验密码
    def validate_password(self, value):
        if not re.match(r'^[a-zA-Z0-9_-]{6,10}$', value):
            raise serializers.ValidationError("请输入6-20的密码!")
        return value
相关推荐
earthzhang202128 分钟前
第3讲:Go垃圾回收机制与性能优化
开发语言·jvm·数据结构·后端·性能优化·golang
apocelipes1 小时前
golang unique包和字符串内部化
java·python·性能优化·golang
纵有疾風起1 小时前
C++——类和对象(3)
开发语言·c++·经验分享·开源
Geoking.2 小时前
NumPy zeros() 函数详解
python·numpy
Full Stack Developme2 小时前
java.text 包详解
java·开发语言·python
文火冰糖的硅基工坊2 小时前
[嵌入式系统-135]:主流AIOT智能体开发板
开发语言·嵌入式·cpu
丁浩6663 小时前
Python机器学习---2.算法:逻辑回归
python·算法·机器学习
yudiandian20143 小时前
02 Oracle JDK 下载及配置(解压缩版)
java·开发语言
要加油哦~3 小时前
JS | 知识点总结 - 原型链
开发语言·javascript·原型模式
B站_计算机毕业设计之家3 小时前
计算机毕业设计:Python农业数据可视化分析系统 气象数据 农业生产 粮食数据 播种数据 爬虫 Django框架 天气数据 降水量(源码+文档)✅
大数据·爬虫·python·机器学习·信息可视化·课程设计·农业