以发送短信,用户传过来的手机号进行验证举例,
serializer对前端传过来的参数进行验证
路由:

from rest_framework.routers import DefaultRouter
from user.views import SmsCodeViewSet
router=DefaultRouter()
#发送短信验证码
router.register('code',SmsCodeViewSet,basename='code')urlpatterns = [path('xadmin/', xadmin.site.urls),url('^ueditor/', include('DjangoUeditor.urls')),# 图片相关展示url(r'^media/(?P<path>.*)$', serve, {"document_root": MEDIA_ROOT}),url('^', include(router.urls)),# restframework配置url('^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
]

view视图:

class SmsCodeViewSet(CreateModelMixin,viewsets.GenericViewSet):"""发送手机短信验证码"""serializer_class = SmsSerializer#生成验证码code="%04d" % random.randint(0, 10000)def create(self, request, *args, **kwargs):serializer=self.get_serializer(data=request.data)# 如果数据无效就返回400状态码(请求参数错误)serializer.is_valid(raise_exception=True)mobile=serializer.validated_data["mobile"]api_key="发送短信的api_key"#实例化发送短信类yun_pian=YunPian(api_key=api_key)#调用发送短信函数sms_status=yun_pian.send_sms(code=self.code,mobile=mobile)if sms_status["code"]!=0:return Response({'mobile':sms_status["msg"]},status=status.HTTP_400_BAD_REQUEST)else:verify_code=VerifyCode(code=self.code,mobile=mobile)verify_code.save()return Response({"mobile":mobile},status=status.HTTP_201_CREATED)

serializer类:

from django.contrib.auth import get_user_model
User=get_user_model()class SmsSerializer(serializers.Serializer):mobile=serializers.CharField(max_length=11)def validate_mobile(self,mobile):"""验证手机号码:param data: :return: """# 手机是否注册if User.objects.filter(mobile=mobile).count():raise serializers.ValidationError("该用户已注册")# 验证手机号码是否合法if  re.match(REGEX_MOBILE,mobile):raise serializers.ValidationError("手机号码非法")# 验证码发送频率one_minits_ago=datetime.now()-timedelta(hours=0,minutes=1,seconds=0)if VerifyCode.objects.filter(add_time__gt=one_minits_ago,mobile=mobile).count():raise serializers.ValidationError("验证码发送太过于频繁,请稍后再试!")return mobile

DRF如何使用serializer进行验证数据相关推荐

  1. DRF数据验证+数据存储

    1.验证数据的自定义类 class BooksDRFt(serializers.ModelSerializer):class Meta:model = Bookfields = '__all__'#要 ...

  2. drf序列化器-Serializer

    Python之drf序列化器-Serializer 一.序列化器-Serializer的作用 序列化,序列化器会将模型类对象转化为字典,经过Response变成json字符串 反序列化,把客户发送过来 ...

  3. 快速上手Django(六) -Django之Django drf 序列化器Serializer类

    文章目录 快速上手Django(六) -Django之Django drf 序列化器Serializer类 1. 背景 2. 使用思路 3. 代码demo 4. [重要]序列化类 ModelSeria ...

  4. 交叉验证分析每一折(fold of Kfold)验证数据的评估指标并绘制综合ROC曲线

    交叉验证分析每一折(fold of Kfold)验证数据的评估指标并绘制综合ROC曲线 Receiver Operating Characteristic (ROC) with cross valid ...

  5. python 数据逐个验证_在python中验证数据的最佳方法是什么?

    我是Python的新手,我试图找到验证数据的最佳方法.在 我有一个"well"类型的对象,它具有其他对象的属性.也可以通过XML文件来获取数据.下面是一个例子.在class Wel ...

  6. tableau必知必会之运用本福德定律(Benford‘s law)验证数据真实性

    本福德定律 本福德定律(本福德法则 Benford's law ),也称为本福德法则,说明一堆从实际生活得出的数据中,以1为首位数字的数的出现机率约为总数的三成,接近期望值 1/9 的 3 倍.而越大 ...

  7. STRUTS2.X之使用validate方法验证数据

    在Struts2中最简单的验证数据的方法是使用validate.我们从 ActionSupport类的源代码中可以看到,ActionSupport类实现了一个Validateable接口.这个接口只有 ...

  8. System.Web.HttpException: 无法验证数据解决办法

    无法验证数据. 说明: 执行当前 Web 请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息. 异常详细信息: System.Web.HttpExcep ...

  9. 机器学习的训练数据(Training Dataset)、测试数据(Testing Dataset)和验证数据(Validation Dataset)

    三者的意义 - 训练数据:用来训练模型的数据 - 验证数据:用来检验模型准确率 - 测试数据:再一次确认验证数据集中的模型是好的模型. 一般步骤: 测试数据集和验证数据的数据一定不能用来训练,否则会出 ...

  10. 使用JSON-Schema验证数据,第1部分

    处理复杂的结构化数据时,需要确定数据是否有效. JSON-Schema是JSON文档的标准,描述了JSON数据的结构和要求. 在这个由两部分组成的系列文章中,您将学习如何使用JSON-Schema来验 ...

最新文章

  1. 命令行下执行带参数php
  2. InfoPath表单每增加一个表单产生一个自动增加ID序号
  3. CodeForces - 993C Careful Maneuvering(几何+暴力+状态压缩)
  4. 2018/7/13-纪中某C组题【jzoj3382,jzoj3383,jzoj3384,jzoj3385】
  5. spring boot注释_Spring Boot中的@SpringBootConfiguration注释
  6. 在服务器上搭建基于yolo3 与crnn 实现中文自然场景文字检测及识别,GPU版本
  7. windows mysql 备份_Windows下MySQL数据库备份脚本(二) | 系统运维
  8. 主进程中发生javascript错误_你知道 JavaScript 中的错误对象有哪些类型吗?
  9. 【数学】Birthday
  10. C# Socket 简易的图片传输
  11. 跳一跳外挂的python实现--OpenCV步步精深
  12. 演练nerddinner 问题
  13. python one class svm_sklearn例程:OneClassSVM物种分布建模
  14. 线性表_使用栈实现二进制转换到八进制/十进制/十六进制
  15. Linux操作系统知识点总结
  16. C#日历控件(MonthCalendar)
  17. Photoshop(4)做海报的心得
  18. 微软开源!世界首个AI量化投资平台 Qlib 基本使用教程
  19. 汇编中的jmp转移指令:jmp short、jmp near ptr、jmp far ptr
  20. “王者荣耀”与大数据平台的产品化思想

热门文章

  1. Proteus一体化安装STC15库添加
  2. Rider+EmmyLua lua代码高亮设置
  3. 用摄动法证明fibs的一个公式(继续变形)
  4. 论文记载:FRAP:Learning Phase Competition for Traffic Signal Control
  5. html5在线画图工具,HTML5 Canvas画板画图工具 可定义笔刷和画布
  6. 三个精致的钢琴音源 Native Instruments Definitive Piano Collection
  7. android 按钮救星,按键救星下载-按键救星专业版(Button Savior Pro) 安卓版v2.1.1-PC6安卓网...
  8. 浏览器之硬件加速机制
  9. 二维傅里叶变换简化方式
  10. 微软私有云的数据保护之神——DPM