当前位置: 首页> 新闻> 焦点 > 三类医疗器械_机械设备怎样做网络推广_百度快照在哪里找_免费推广网站地址大全

三类医疗器械_机械设备怎样做网络推广_百度快照在哪里找_免费推广网站地址大全

时间:2025/7/8 3:54:00来源:https://blog.csdn.net/lifanping/article/details/148813737 浏览次数:0次
三类医疗器械_机械设备怎样做网络推广_百度快照在哪里找_免费推广网站地址大全

在实际项目开发中,原有框架的response可能并不能完全满足我们的需求。比如我们需要定义一些更加详细的RESULT_CODE来说明情况。那么我们就可以基于原有的response进行自定义。

下面是一个自定义Django rest_framework中response的示例

# -*- coding:utf-8 -*-
import json
from rest_framework.response import Response
from rest_framework.status import HTTP_403_FORBIDDEN, HTTP_404_NOT_FOUND, HTTP_401_UNAUTHORIZED, \HTTP_402_PAYMENT_REQUIRED, HTTP_400_BAD_REQUEST, HTTP_500_INTERNAL_SERVER_ERROR, HTTP_200_OK
from rest_framework.pagination import PageNumberPaginationRESPONSE_STATUS = [200, 400, 401, 403, 404, 500]
RESULT_CODE_DICT = {200: {'0': '成功',},400: {'10000': '请求参数无效','10001': '资源存在,无需重复创建','10002': '参数缺失',},401: {'10100': '用户需要登录:Token无效或缺失','10101': '用户冻结','10102': 'Token无效','10103': 'Token缺失','10104': 'Authentication Key无效','10105': 'Token过期'},403: {'10300': '没有权限访问','10301': '权限密钥无效',},404: {'10400': '所请求的资源不存在'},500: {'10500': '系统错误'}
}# 基于rest_framework的Response
def api_success(data=None, message='', headers=None):if not message:message = '成功'return Response({'result': True, 'result_code': '0', 'result_text': str(message), "message": str(message), 'data': data},status=HTTP_200_OK, headers=headers)def api_bad_request(message=''):if not message:message = '请求参数有误'return Response({'result': False, 'result_code': '10000', 'result_text': str(message), "message": str(message)},status=HTTP_400_BAD_REQUEST)def api_request_params_required(params):if not params:message = '检查请求参数是否完整'else:if isinstance(params, str):params = (params,)message = '参数:{}为必填'.format(','.join(params))return Response({'result': False, 'result_code': '10002', 'result_text': str(message), "message": str(message)},status=HTTP_400_BAD_REQUEST)def api_repeated_request(message=''):if not message:message = '资源存在,无需重复创建'return Response({'result': False, 'result_code': '10001', 'result_text': str(message), "message": str(message)},status=HTTP_400_BAD_REQUEST)def api_unauthorized(message=''):if not message:message = '用户登录验证失败'return Response({'result': False, 'result_code': '10100', 'result_text': str(message), "message": str(message)},status=HTTP_401_UNAUTHORIZED)def api_invalid_authentication_key(message=''):if not message:message = 'Authentication Key无效'return Response({'result': False, 'result_code': '10104', 'result_text': str(message), "message": str(message)},status=HTTP_401_UNAUTHORIZED)def api_authentication_expired(message=''):if not message:message = 'Token过期'return Response({'result': False, 'result_code': '10105', 'result_text': str(message), "message": str(message)},status=HTTP_401_UNAUTHORIZED)def api_suspended(message=''):if not message:message = '用户冻结'return Response({'result': False, 'result_code': '10101', 'result_text': str(message), "message": str(message)},status=HTTP_401_UNAUTHORIZED)def api_permissions_required(permissions=None):if not permissions:message = '没有权限访问'else:if isinstance(permissions, str):permissions = (permissions,)message = '缺失权限:{}'.format(','.join(permissions))return Response({'result': False, 'result_code': '10300', 'result_text': str(message), "message": str(message)},status=HTTP_403_FORBIDDEN)def api_invalid_permission_key(message=''):if not message:message = '权限验证失败'return Response({'result': False, 'result_code': '10301', 'result_text': str(message), "message": str(message)},status=HTTP_403_FORBIDDEN)def api_not_found(message=''):if not message:message = '所请求的资源不存在'return Response({'result': False, 'result_code': '10400', 'result_text': str(message), "message": str(message)},status=HTTP_404_NOT_FOUND)def api_error(message=''):if not message:message = '系统错误'return Response({'result': False, 'result_code': '10500', 'result_text': str(message), "message": str(message)},status=HTTP_500_INTERNAL_SERVER_ERROR)def build_pagination_response(request, queryset, serializer_class):data, headers = build_pagination_queryset_data(request, queryset, serializer_class)return api_success(data=data, headers=headers)def build_pagination_queryset_data(request, queryset, serializer_class):"""为分页接口返回的headers中自定义一些信息:param request::param queryset::param serializer_class::return:"""page = request.GET.get('page', None)page_size = request.GET.get('page_size', None)total = len(queryset)headers = Noneif page and page_size:paginator = PageNumberPagination()paginator.page_size_query_param = 'page_size'queryset = paginator.paginate_queryset(queryset, request)pagination_params = json.dumps({'total': total, 'page': int(page), 'page_size': int(page_size)})headers = {'X-Pagination': pagination_params,'Access-Control-Expose-Headers': 'X-Pagination'}data = serializer_class(queryset, many=True).datareturn data, headers

关键字:三类医疗器械_机械设备怎样做网络推广_百度快照在哪里找_免费推广网站地址大全

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: