• 第四阶段:DRF day77 DRF--DRF的请求、渲染、解析、异常、响应模块的使用


    一、昨日内容复习

    """
    1、html常用标签
    2、css选择器,css三种布局
    3、js四种变量,js字符串、数组、对象的操作方法,js可变长参数
    4、接口的四个核心部分:请求方式,请求地址,请求参数,响应结果
    5、接口工具:写接口文档的YApi平台,访问接口的Postman工具
    6、restful接口规范:如何设计url,请求方式代表操作方式,网络状态码及其含义,响应结果
    7、基于原生django书写满足restful规范的接口:两个url 对应 一个视图类 完成 十大接口
    8、CBV请求生命周期:as_view()完成路由匹配 => url请求会调用as_view()的返回值视图函数view => 调用dispatch()完成请求分发 => 视图类的具体视图方法处理请求 => 返回给前台
    
    9.
    	安装drf:pip install djangorestframework
    	视图类继承drf的APIView: from rest_framework.views import APIView
    	读懂drf的as_view()方法:返回视图函数view是,局部禁用了csrf认证 - csrf_exempt(view)
    	请求分发的dispatch(),
    		在分发执行视图方法前,完成了
    			二次封装request:self.initialize_request(request, *args, **kwargs)
    			三大认证:self.initial(request, *args, **kwargs)
    		在视图方法处理完请求后:
    			出现异常的处理:self.handle_exception(exc)
    			二次封装response:self.finalize_response(request, response, *args, **kwargs)
    			
    10、自己看drf源码入口:直接查看 rest_framework.view的APIView的dispatch方法
    """
    

    二、今日学习内容

    """
    1、请求模块:drf的request是对wsgi的request二次封装,且完全兼容,拓展query_params和data两个属性
    	request._request
    	request._request = request
    	request.query_params = request._request.GET
    	request.data(form-data,urlencoded,json)
    	
    	
    2、渲染模块:可以全局和局部配置渲染方式
    	renderer_classes = []
    	DEFAULT_RENDERER_CLASSES: []
    
    3、解析模块:可以全局和局部配置能解析的数据包
    	parser_classes = []
    	DEFAULT_PAARSER_CLASSES: []
    
    4、异常模块:自定义异常模块,可以自定义异常返回以及提供记录异常的接口(这里接口的意思就是该需求后期可以在这里添加)
    	'EXCEPTION_HANDLER': 'api.utils.exception_handler',
    	
    	from rest_framework.views import exception_handler as drf_exception_handler
    	def exception_handler(exc, context):
    		response = drf_exception_handler(exc, context)
    		if respose is None:
    			return Response(自己处理) 	# 服务器错误 500
    		return response  # drf处理的,客户端错误 4xx
    		
    5、响应模块:知道response对象产生可以传那些信息,response对象又是如何访问这些信息的
    	Response(data={}, status=status.HTTP_200_OK, headers={})
    """
    

    三、今日练习

    练习A

    """
    1、整理今天所学知识点
    
    2、简单过过请求模块的源码流程,建立一个视图类,完成一项渲染模块与解析模块的全局局部配置
    
    3、在自己项目中自定义一下异常处理函数,并配置给项目
    """
    

    练习B

    """
    1、后期项目会出现大量的响应,响应数据可以如下
    正确的:Response({'status':0,'msg':'ok','results':[]})
    异常的:Response({'status':1,'msg':'error'}, status=400)
    ...
    
    能不能二次封装Response类(自定义一个APIResponse类继承Response),优化响应
    正确的:APIResponse('results'=[])  # 数据状态码和状态信息有默认值,可以不传
    异常的:Response(1,'error', status=400)  # 可以按位传数据状态码和状态信息,错误时还可以设置网络状态码
    封装后的响应与封装前的响应结果一致,但是大大简化了响应写法
    """
    
  • 相关阅读:
    java时间戳转换日期 和 日期转换时间戳
    通过blob文件导出下载成Excel文件
    三元表达式进化
    Vue切换组件实现返回后不重置数据,保留历史设置操作
    vue 下载文件
    ide打断点,跑到某一行代码,再执行的方法
    Java操作终端的方法
    前端下载本地文件的方法
    java 读取本地json文件
    js 时间戳转换
  • 原文地址:https://www.cnblogs.com/foreversun92/p/11900484.html
Copyright © 2020-2023  润新知