• 测试随笔(用来对比调整博客样式)


    解析模块

    为什么要配置解析模块

    """
    1)drf 给我们提供了多种解析数据包方式的解析类
    2)我们可以通过配置 来控制前台提交那些格式的数据,哪些在后台解析,哪些不解析
    3)全局配置(settings.py)就是针对每一个视图类,局部配置(类属性)就是针对指定的视图来,让它们可以按照配置规则选择性解析数据
    """
    

    源码

    入口

    # APIView类的dispatch方法中
    request = self.initialize_request(request, *args, **kwargs)  # 点进去
    
    # 获取解析类
    parsers=self.get_parsers(),  # 点进去
    
    # 去类属性(局部配置) 或 配置文件(全局配置) 拿 parser_classes
    return [parser() for parser in self.parser_classes]
    

    全局配置:项目的 settings.py 文件

    REST_FRAMEWORK = {
        # 全局解析类配置
        'DEFAULT_PARSER_CLASSES': [
            'rest_framework.parsers.JSONParser',  # json数据包
            'rest_framework.parsers.FormParser',  # urlencoding数据包
            'rest_framework.parsers.MultiPartParser'  # form-date数据包
        ],
    }
    

    标题一

    标题二

    标题三

    标题四

    标题五
    标题六

    局部配置:应用views.py的具体视图类

    from rest_framework.parsers import JSONParser
    class Book(APIView):
        # 局部解析类配置,只要json类型的数据包才能被解析
        parser_classes = [JSONParser]
        pass
    

    异常模块

    • 请求会出现异常(没写的请求方式)(drf 异常模块渲染过的异常)

    • 404 异常(原生异常)

    • 代码报错(get 获取不到)(后台报错)

    为什么要自定义异常模块

    """
    1)所有经过 drf 的 APIView 视图类产生的异常,都可以提供异常处理方案
    2)drf 默认提供了异常处理方案(rest_framework.views.exception_handler),但是处理范围有限
    3)drf 提供的处理方案有两种,处理了返回异常现象,没处理返回None(后续就是服务器抛异常给前台)
    4)自定义异常的目的就是自行处理 drf 没有处理的那些异常,让前台得到合理的异常信息返回,后台记录异常具体信息
    """
    

    源码分析

    # 异常模块:APIView 类的 dispatch 方法中
    response = self.handle_exception(exc)  # 点进去
    
    # 获取处理异常的句柄(方法)
    # 一层层看源码,走的是配置文件,拿到的是rest_framework.views的exception_handler
    # 自定义异常处理
    # 	直接写 exception_handler 函数,在自己的配置文件配置 EXCEPTION_HANDLER 指向自己的
    exception_handler = self.get_exception_handler()
    
    # 异常处理的结果
    # 自定义异常就是提供exception_handler异常处理函数,处理的目的就是让response一定有值
    response = exception_handler(exc, context)
    
    如何使用:自定义exception_handler函数如何书写实现体
    # 修改自己的配置文件setting.py
    REST_FRAMEWORK = {
        # 全局配置异常模块
        'EXCEPTION_HANDLER': 'api.exception.exception_handler',
    }
    
  • 相关阅读:
    龙威零式_团队项目例会记录_12
    龙威零式_团队项目例会记录_11
    龙威零式_团队项目例会记录_10
    个人项目--词频统计
    四人小组-----车辆管理系统+员工管理
    效能分析
    结对编程体会
    累计进度条 PSP 饼图
    词频统计更新
    四人项目设计
  • 原文地址:https://www.cnblogs.com/suwanbin-thought/p/11688596.html
Copyright © 2020-2023  润新知