看不明白的django代码

def get(self, request):  #处理get请求
    if len(request.GET) <= 0:  #请求体中无附加信息
        fixedCostDatas = FixedCost.objects.all()  #ORM系统查询
        data = [    #响应数据构建
            {
                "id": item.id,
                "name": item.name,
                "price": float(item.amount),
                "type": item.cost_type,
                "remark": item.remark

            }
            for item in fixedCostDatas   #列表推导式
        ]

        context = {"data": data}
        return render(request, 'costManagement/fixedCost.html', context) 
                    #根据,context返回的数据,使用模板创建并返回渲染后的页面

                    那下面这些代码负责啥?????

    try:
        fcId = int(request.GET['fid'])
        if fcId == -1:
            fixedCostDatas = FixedCost.objects.all()
        else:
            fixedCostDatas = [FixedCost.objects.get(id=fcId)]

        response_data = {
            'code': ResponseCode.SUCCESS.CODE,
            'message': ResponseCode.SUCCESS.MESSAGE,
            'desc': ResponseCode.SUCCESS.DESC,
            'data': [
                {
                    'id': item.id,
                    'amount': str(item.amount),
                    'date': item.date.strftime("%Y-%m-%d"),
                    'remark': item.remark,
                    'name': item.name,
                    'cost_type': item.cost_type
                }
                for item in fixedCostDatas
            ]
        }
        return JsonResponse(response_data)

    except FixedCost.DoesNotExist:
        error_response = {
            'code': ResponseCode.CLIENT_ERROR.NOT_FOUND.CODE,
            'message': ResponseCode.CLIENT_ERROR.NOT_FOUND.MESSAGE,
            'desc': ResponseCode.CLIENT_ERROR.NOT_FOUND.DESC,
            'data': []
        }
        return JsonResponse(error_response)

评论 1

  • def get(self, request): """ 处理GET请求,根据请求中是否包含附加信息来查询和返回不同的固定成本数据。

    参数:
    - self: 表示类的实例。
    - request: HttpRequest对象,包含客户端发来的HTTP请求信息。
    
    返回值:
    - HttpResponse对象:根据请求内容返回渲染的HTML页面或JSON响应数据。
    """
    # 当请求体中无附加信息时,查询并返回所有固定成本数据
    if len(request.GET) <= 0:
        fixedCostDatas = FixedCost.objects.all()  # 通过ORM查询所有固定成本数据
        data = [  # 构建响应数据列表
            {
                "id": item.id,
                "name": item.name,
                "price": float(item.amount),
                "type": item.cost_type,
                "remark": item.remark
            }
            for item in fixedCostDatas  # 使用列表推导式遍历并转换查询结果
        ]
    
        context = {"data": data}
        return render(request, 'costManagement/fixedCost.html', context)  # 渲染并返回页面
    
    try:
        # 当请求体中包含附加信息时,根据fid查询特定的固定成本数据或所有数据
        fcId = int(request.GET['fid'])
        if fcId == -1:
            fixedCostDatas = FixedCost.objects.all()
        else:
            fixedCostDatas = [FixedCost.objects.get(id=fcId)]
    
        # 构建并返回JSON响应数据
        response_data = {
            'code': ResponseCode.SUCCESS.CODE,
            'message': ResponseCode.SUCCESS.MESSAGE,
            'desc': ResponseCode.SUCCESS.DESC,
            'data': [
                {
                    'id': item.id,
                    'amount': str(item.amount),
                    'date': item.date.strftime("%Y-%m-%d"),
                    'remark': item.remark,
                    'name': item.name,
                    'cost_type': item.cost_type
                }
                for item in fixedCostDatas  # 遍历查询结果,构建数据列表
            ]
        }
        return JsonResponse(response_data)
    
    except FixedCost.DoesNotExist:
        # 当查询不到指定的固定成本数据时,返回错误的JSON响应
        error_response = {
            'code': ResponseCode.CLIENT_ERROR.NOT_FOUND.CODE,
            'message': ResponseCode.CLIENT_ERROR.NOT_FOUND.MESSAGE,
            'desc': ResponseCode.CLIENT_ERROR.NOT_FOUND.DESC,
            'data': []
        }
        return JsonResponse(error_response)