django-rest-framework学习

1.安装

pip install django==4.2
pip install djangorestframework

2.新建项目

django-admin startproject cyh_be

cd cyh_be/
django-admin startapp yh

3.在app的settings.py文件当中添加:

INSTALLED_APPS = [
	'...',
    'rest_framework',
]

# django-rest-framework配置
# 路径根据实际情况进行调整
REST_FRAMEWORK = {
    # 全局配置异常模块
    'EXCEPTION_HANDLER': 'website.utils.custom_exception.custom_exception_handler',
    # 修改默认返回JSON的renderer的类
    'DEFAULT_RENDERER_CLASSES': (
        'website.utils.custom_render.CustomJSONRenderer',
    ),
}

4.统一异常处理
custom_exception.py

"""自定义异常处理"""
from rest_framework.views import exception_handler
from rest_framework.views import Response
from rest_framework import status


def custom_exception_handler(exc, context):
    """获取REST framework标准错误响应对象"""
    response = exception_handler(exc, context)

    data = {
        'errorCode': 500,
        'errorMsg': '',
    }
    if response is None:
        data['errorMsg'] = '服务器错误:{exc}'.format(exc=exc)
        return Response(data, status=status.HTTP_500_INTERNAL_SERVER_ERROR, exception=True)
    else:
        data['errorMsg'] = '服务器错误:{exc}'.format(exc=exc)
        if response.status_code == status.HTTP_400_BAD_REQUEST:
            data['errorCode'] = 400
        elif response.status_code == status.HTTP_404_NOT_FOUND:
            data['errorCode'] = 404
        # 可根据需要继续添加
        return Response(data, status=response.status_code, exception=True)

5.统一返回结构处理。由于工作需求,接口最外层需使用data包裹
custom_render.py

"""统一结构"""

from rest_framework.renderers import JSONRenderer


class CustomJSONRenderer(JSONRenderer):
    """继承JSONRenderer"""

    def render(self, data, accepted_media_type=None, renderer_context=None):
        response = {
            'data': data
        }
        if renderer_context.get('response').status_code >= 400:
            # 异常响应使用error替代
            response['error'] = data
            del response['data']
        return super(CustomJSONRenderer, self).render(response, accepted_media_type, renderer_context)

6.统一分页处理
utils/…

  • 13
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值