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/…