首页 > 其他分享 >django 如何在序列化器中抛出错误 并且在视图中捕捉返回给前端

django 如何在序列化器中抛出错误 并且在视图中捕捉返回给前端

时间:2023-06-25 15:57:17浏览次数:49  
标签:errors ValidationError 抛出 错误信息 视图 django 序列化 serializer

1.在create()中抛出错误

class YourSerializer(serializers.Serializer):
    def create(self, validated_data):
        # 进行数据验证是否满足条件
       #得到数据过程以省略
       condition = False
        if not condition:
            # 抛出ValidationError异常,并传递错误信息
            raise ValidationError("错误信息")
        else:
            正常逻辑

2.在valudate钩子中校验数据抛出错误

class YourSerializer(ModelSerializer):
    class Meta:
        model = Aaa
        exclude = ('is_delete', 'create_time',"modified_time" )

    def validate(self, attrs):

        a = attrs.get('a')

        if len(a) < 10:
                raise ValidationError({'a': '该字段长度不能小于10'})    
        
        return attrs

 

2. 在视图中捕捉

from rest_framework.views import APIView
from rest_framework.response import Response

class YourView(APIView):
    def post(self, request):
        serializer = YourSerializer(data=request.data)
        try:
            if serializer.is_valid():
                serializer.save()
                return Response(serializer.data)
            else:
                # 如果序列化器验证失败,获取错误信息
                errors = serializer.errors
                return Response(errors, status=status.HTTP_400_BAD_REQUEST)
        except ValidationError as e:
            # 如果在序列化器的create方法中抛出了ValidationError异常,在这里捕获错误信息并返回给前端
            errors = str(e.args[0])  # 获取错误信息
            return Response(errors, status=status.HTTP_400_BAD_REQUEST)

 

标签:errors,ValidationError,抛出,错误信息,视图,django,序列化,serializer
From: https://www.cnblogs.com/ltyc/p/17503099.html

相关文章

  • django 上下文管理器 get_context_data 使用
    在Django中,序列化器(serializer)是用于处理数据的序列化和反序列化的类。而get_context_data()方法是用于获取视图上下文数据的方法。默认情况下,序列化器无法直接拿到get_context_data()中的内容。如果你希望将get_context_data()中的内容传递给序列化器进行处理,可以通过以下几种方......
  • 微信小程序开发《3. 视图与渲染》
    1.组件的基本使用组件这里不详细记录了,就当做一个帮助文档来阅读;官方文档2.数据的绑定主要通过{{xxx}}来绑定数据2.1.js文件里面data的设置Page({data:{text:'这里是内容!',}})2.2.wxml里面的设置<text>{{text}}</text>3.渲染标签的使用可以通过事件来进行切换;.j......
  • Pickle反序列化漏洞学习
    Pickle反序列化漏洞模块pickle实现了对一个Python对象结构的二进制序列化和反序列化。"pickling"是将Python对象及其所拥有的层次结构转化为一个字节流的过程,而"unpickling"是相反的操作,会将(来自一个binaryfile或者bytes-likeobject的)字节流转化回一个对象层次......
  • django之图书管理系统
    后端路由 urlpatterns=[path('admin/',admin.site.urls),首页re_path('^$',views.Bms.as_view()),图书path('book/',views.Books.as_view()),出版社path('publish/',views.Publish.as_view()),作者......
  • django之视图层
    三板斧HttpResponse返回字符串类型render返回html页面并且在返回给浏览器之前还可以给html文件传值redirect重定向"""#视图函数必须要返回一个HttpResponse对象正确研究三者的源码即可得处结论Theviewapp01.views.indexdidn'treturnanHttpRes......
  • django入门
    django使用前注意事项: """1.计算机名称不能有中文2.一个pycharm窗口不要打开多个项目(跟不要出现文件夹套文件夹多级目录的出现)day01day02...3.文件名也不要出现中文如果django安装成功了但是启动就报错那么点击报错......
  • 【Django】图形验证码显示及验证
    图形验证码显示及验证开发项目时,在登陆或者注册功能中为防止脚本恶意破坏系统,故而添加图形验证码。1安装配置安装第三方库pipinstalldjango-simple-captcha配置settings.pyINSTALLED_APPS=[ ......'captcha',]将已存在的数据库迁移文件集同步到数据库中......
  • phar反序列化漏洞简单介绍
    phar反序列化漏洞介绍什么是phar:phar类似于java中的jar打包phar的结构:stubphar文件标识,格式为xxx<?phpxxx;__HALT_COMPILER();?>;(头部信息)manifest压缩文件的属性等信息,以序列化存储;contents压缩文件的内容;signature签名,放在文件末尾;phar协议解析文件时,会自动触发对......
  • django前戏
    Web框架本质web框架本质上可以看成是一个功能强大的socket服务端,用户的浏览器可以看成是拥有可视化界面的socket客户端。两者通过网络请求实现数据交互,学者们也可以从架构层面上先简单的将Web框架看做是对前端、数据库的全方位整合纯手撸web框架服务端importsocketserve......
  • Spring Boot视图解析
    视图解析:SpringBoot默认不支持JSP,需要引入第三方模板引擎技术实现页面渲染。thymeleaf使用:引入Starter<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId><......