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

news2025/1/14 0:46:36

文章目录

    • 错误复现
      • serializers.py
      • view.py
      • 错误
    • 解决方案
    • 正确的代码

错误复现

serializers.py

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

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

在这里插入图片描述

解决方案

一定不要像我一样粗心

在这里插入图片描述

validate_<field_name>验证完毕没有返回Value

正确的代码

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1111879.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32内部flash闪存的总结

最近在做无人船和机巢远程在线升级的项目&#xff0c;牵扯到flash的操作&#xff0c;特此记录&#xff0c;便于以后查找。IMU也用到过&#xff0c;当时没记录 具体细节看 E:\Documets\AY\a-project\IMU\IMU16500\S0IMU v3.3 study\User\Driver\source eeprom.c E:\Documets\A…

Looper分析

Looper分析 在 Handler 机制中&#xff0c;Looper 的作用是提供了一个消息循环 ( message loop ) 的机制&#xff0c;用于处理和分发消息。 Looper 是一个线程局部的对象&#xff0c;每个线程只能有一个 Looper 对象。它通过一个无限循环来不断地从消息队列中取出消息&#x…

How to add a jar to a project in eclipse?

Project -> Properties -> Java Build Path -> Libraries -> Add External JARs

50springboot私人健身与教练预约管理系统

大家好✌&#xff01;我是CZ淡陌。一名专注以理论为基础实战为主的技术博主&#xff0c;将再这里为大家分享优质的实战项目&#xff0c;本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#xff0c;希望你能有所收获&#xff0c;少走一些弯路…

arrow(c++)改写empyrical系列1---用arrow读取基金净值数据并计算夏普率

用arrow c版本读取了csv中的基金净值数据&#xff0c;然后计算了夏普率&#xff0c;比较尴尬的是&#xff0c;arrow c版本计算耗费的时间却比python的empyrical版本耗费时间多。。。 arrow新手上路&#xff0c;第一次自己去实现功能&#xff0c;实现的大概率并不是最高效的方…

rviz中显示的点云与网格垂直,将保存的pcd文件转为点云在rviz中显示,并使用octomap_server将点云地图转化为八叉树地图和占据栅格地图

文章目录 问题&#xff1a;点云与网格垂直背景解决方法&#xff1a;对点云坐标做变换&#xff0c;绕x轴旋转90度&#xff0c;将z轴指向上方将pcd转成点云&#xff0c;在RVIZ中显示点云图创建launch rviz显示 问题&#xff1a;点云与网格垂直 用lego-loam建图时用rosbag录制相关…

以哈战争或推动美国「屠杀」比特币

摘要&#xff1a;加密货币公司急于在国会对以色列被袭引发的审查之前采取行动。 作者&#xff1a;JASPER GOODMAN 来源&#xff1a;POLITICO 编译&#xff1a;WEEX Exchange 原文标题&#xff1a;How Elizabeth Warren is making Hamas crypto’s latest Washington woe 编者按…

Python万圣节蝙蝠

目录 系列文章 前言 蝙蝠 程序设计 程序分析 运行结果 尾声 系列文章 序号文章目录直达链接1浪漫520表白代码https://want595.blog.csdn.net/article/details/1306668812满屏表白代码https://want595.blog.csdn.net/article/details/1297945183跳动的爱心https://want5…

架构师日记-33个常见编码漏洞大揭秘

一 前言 在软件编码的过程中&#xff0c;经常会遇到各种棘手的问题和挑战&#xff1a; •高并发、大数据引起的性能问题&#xff1b; •SQL注入、跨站脚本攻击的安全问题&#xff1b; •协议、编码的规范设计问题等&#xff1b; 本文就从最常见的性能、安全和设计等几个维…

2023.10.19 关于 单例模式 详解

目录 引言 单例模式 饿汉模式 懒汉模式 懒汉模式线程安全问题 分析原因 引言 设计模式为编写代码的 约定 和 规范 阅读下面文章前建议点击下方链接明白 对象 和 类对象 对象和类对象 单例模式 单个实例&#xff08;对象&#xff09;在某些场景中有特定的类&#xff0c;…

Python学习-----Day09

一、利用装饰器来获取函数运行的时间、 #导入time模块 import timedef decorated(fn):def inner():#time.time获取函数执行的时间a time.time() # func开始的时间fn()b time.time() # func结束的时间print(f"{fn.__name__}程序运行的总数时间:{b - a}秒")return…

View 自定义 - 绘制前的准备 DecorView

一、概念 图中可以看出 ViewRoot 最后一步是绘制&#xff0c;在绘制之前系统会有一些准备&#xff0c;即前面几个步骤&#xff1a;创建PhoneWindow、DecorView、ViewRootmpl。 二、DecorView 的创建 DecorView的创建开始是从 Activity 中 setContentView() 开始的。 创建抽象类…

项目管理的10个经典法则

大家好&#xff0c;我是老原。 前两天给大家更新了一篇实用文&#xff0c;分享了6张能搞定项目管理的思维导图&#xff0c;很多粉丝朋反馈对项目更有思路了。 那6张思维导图都需要建立在一定的项目管理法则上&#xff0c;今天我也给你们整了项目管理的10个经典法则。 建议大…

域控主机 带瘤

1.装环境 是dns环境 加入域 二.文件上传 2.cs木马生成 服务器 75.233 上传木马成功 上线

C语言之通讯录的实现篇优化版

目录 动态内存管理 通讯录声明 静态版本 动态版本 ​初始化通讯录 静态版本 动态版本 Add增加通讯录 静态版本 动态版本 Checkcapacity增容 DestroyContact释放动态空间 文件操作 SaveContact保存信息到文件中 初始化通讯录 旧版本 文件版本 LoadContact加载…

Hudi-源码-索引-bloom 索引

文章目录 前言问题原理TagLocation流程入口LookupIndexfindMatchingFilesForRecordKeysHoodieKeyLookupHandle 如何优化问题一 如何避免大量 IO问题二 如何减少计算 Hash问题三 使用什么结构优化比对结果如何初始化树查询 总结 前言 Hudi 系列文章在这个这里查看 https://gith…

图论与网络优化

2.概念与计算 2.1 图的定义 2.1.1 定义 图(graph) G G G 是一个有序的三元组&#xff0c;记作 G < V ( G ) , E ( G ) , ψ ( G ) > G<V(G),E(G),\psi (G)> G<V(G),E(G),ψ(G)>。 V ( G ) V(G) V(G) 是顶点集。 E ( G ) E(G) E(G) 是边集。 ψ ( G ) \…

【合集】Redis——Redis的入门到进阶 结合实际场景的Redis的应用

前言 Redis是一个开源的内存数据结构存储系统&#xff0c;也被称为键值存储系统。它支持多种数据结构&#xff0c;如字符串、哈希表、列表、集合、有序集合等&#xff0c;并提供了丰富的操作命令&#xff0c;可以对这些数据结构进行快速的读写操作。Redis具有高性能、高可用性…

驱动:驱动相关概念,内核模块编程,内核消息打印printk函数的使用

一、驱动相关概念 1.操作系统的功能 向下管理硬件&#xff0c;向上提供接口 操作系统向上提供的接口类型&#xff1a; 内存管理&#xff1a;内存申请&#xff08;malloc&#xff09; 内存释放&#xff08;free&#xff09;等 文件管理&#xff1a; 通过文件系统格式对文件ext2…

this指向详解

目录 一&#xff1a;严格模式与非严格模式 1.严格模式的开启 2.this指向的一些情况&#xff1a; 二&#xff1a;如何指定this的值&#xff1f; 1.在调用时指定this的值 2.在创建时指定this的值 ​编辑三&#xff1a; 结尾 一&#xff1a;严格模式与非严格模式 在非严格模…