后台response和异常处理封装

我们自己封装的一些东西,往往放在一个utils文件夹内,以后也方便管理和导入

image

后台response封装

# 自己封装的Response对象

from rest_framework.response import Response

class APIResponse(Response):
    def __init__(self,code=1,msg='成功',result=None,status=None,headers=None,content_type=None,**kwargs):
        dic = {
            'code':code,
            'msg':msg
        }
        if result:
            dic['result']=result
        dic.update(kwargs)
        super().__init__(data=dic,status=status,headers=headers,content_type=content_type)

自己封装的异常处理

# 这里用来放全局异常

# 这个方法可以从rest_framework里的settings.py里找到它的配置,然后导入就行,重写该方法
from rest_framework.views import exception_handler
from . import response # 导入自己定义的响应对象
from .logger import log  #导入自己定义的日志对象


def common_exception_handler(exc, context):
    # 记录以下报错信息到日志中
    # context['view']可以取到具体是哪个视图出了错
    log.error('view是:%s,错误是:%s' %(context['view'].__class__.__name__,str(exc)))
    # 先调用一下原来的exception_handler方法
    ret = exception_handler(exc, context) # ret是一个Response对象,其内部有一个data属性,放的就是错误信息
    # 这个表示如果drf处理不了的异常(交给django处理的异常),我们进行处理一下
    if not ret:
        # 这里面也可以放更多其他逻辑,具体对于会出现的异常进行分类处理
        # 比如下面这样
        # if isinstance(exc,KeyError):
        return response.APIResponse(code=0,msg='error',result=str(exc))
    else:
        # ret.data是一个字典,字典里是drf处理的异常信息
        return response.APIResponse(code=0,msg='error',result=ret.data)

封装完毕之后,还需要在settings里配置一下,告诉drf采用我们封装的异常处理

# 放自己的全局异常
REST_FRAMEWORK = {
    'EXCEPTION_HANDLER': 'luffyapi.utils.exceptions.common_exception_handler',
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:后台response和异常处理封装 - Python技术站

(0)
上一篇 2023年4月2日 下午4:35
下一篇 2023年4月2日

相关文章

  • 函数的递归

    1.函数的递归的定义 函数的递归调用:是函数嵌套调用的一种特殊形式 具体是指:在调用一个函数的过程中又直接或者间接的调用到本身,是一个死循环,最大递归是1000次,超出之后报错。 2.函数递归的调用 # 直接调本身 def f1(): print(‘是我还是我’) f1() f1() # 间接调用 def f1(): print(‘f1’) f2() def…

    Python开发 2023年4月2日
    00
  • 基础数据类型之字典

    1.字典的定义 使用{}定义字典,括号内用逗号分隔开多个key:value,其中value可以是任意类型,但是key必须是不可变类型且不能重复,是无序的! info=[ [‘name’,’zhang’], (‘age’,19) [‘gender’,’男’] ] d={} # 第一种方式定义 d=dict(x=1,y=2) #第二种,dict里面也可以穿一个i…

    Python开发 2023年4月2日
    00
  • drf接口文档

    接口文档 接口编写已经写完了,需要编写接口文档,给前端的人使用 -请求地址 -请求方式 -支持的编码格式 -请求参数(get,post参数) -返回格式示例 在公司的写法 1)直接使用word或者md写2)使用接口文档平台,在接口文档平台录入(Yapi(百度开源的自己搭建),第三方平台(收费),自己开发接口文档平台) -https://www.showdoc…

    2023年4月2日
    00
  • admin后台管理数据库里的表

    admin后台管理 django给您提供了一个可视化图形界面,来方便您来对数据库里的表进行增删改查的管理 但是!使用admin后台管理你自己注册的模型表时,需要自行进行先注册该表! 在应用下的admin.py里进行注册: from django.contrib import admin from app01 import models # Register …

    2023年4月2日
    00
  • 重构后台的django项目目录、配置开发环境、添加环境变量

    重构项目目录 celery_task: logs:项目运行时/开发时日志目录包 luffapi:项目同名文件夹 apps:项目所有应用的集合文件夹 libs:第三方类库的保存目录[第三方组件、模块] – 包 media:用户提交的文件目录文件夹 settings:配置目录,包含开发时的配置文件和上线时的配置文件 utils:多个模块[子应用]的公共函数类库[…

    2023年4月2日
    00
  • 首页轮播图后端接口设计

    逻辑导航 1.当一访问127.0.0.1:8000时,就会向某一地址发送请求2.请求接口需要返回首页所需要的轮播图片3.前端vue轮播图组件循环一下后端发送的图片连接列表,依次展示轮播图 轮播图表设计 轮播图中一些共有的字段,我们可以创建一个公共的基础表,以后需要该字段直接基础该表就行 基表,可以放在自己写的utils.py里,以便后期使用! from dj…

    2023年4月2日
    00
  • 数据库配置限)不用root用户操作数据库了(为数据库创建用户,并赋予权限)

    步骤 1.为路飞项目创建数据库 在mysql终端输入以下代码: create database luffy charset=utf8; 2.创建数据库用户 create user ‘username’@’host’ identified by ‘password’; 其中username为自定义的用户名;host为登录域名,host为’%’时表示为 任意IP…

    Python开发 2023年4月2日
    00
  • flask蓝图与项目一般结构

    flask一般项目结构 初始化配置flask项目时,路由和视图是放在启动文件里的,这样不太方便我们后期的整理和查阅! 因此,我们需要将项目启动文件和路由视图分开处理! 在项目文件下创建一个apps的包,在包的初始化文件里定义一个函数,用来实现app相关的功能 init.py from flask import Flask import settings de…

    Python开发 2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部