You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django循环API数据存入列表格式不符,求修正方案

解决方法

你原代码存在两个核心问题:

  1. 未实际发起API请求,仅将URL字符串赋值给get_response变量,需要用requests库发送GET请求
  2. 错误地将每个数据项单独包装为带results键的对象存入列表,还把长度字段塞进列表,导致返回格式不符合预期

修正后的views.py代码如下:

import requests
from django.http import JsonResponse

def extract_view(request):
    # 初始化最终返回结构,默认结果为空数组、长度为0
    response_data = {
        "results": [],
        "length_of_results": 0
    }
    
    try:
        # 实际发起API请求
        get_response = requests.get("https://api.punkapi.com/v2/beers")
        if get_response.status_code == 200:
            # 将API返回的JSON数组直接存入results字段
            response_data["results"] = get_response.json()
            # 计算结果集长度
            response_data["length_of_results"] = len(response_data["results"])
    except requests.exceptions.RequestException:
        # 捕获请求异常,避免程序崩溃
        pass
    
    return JsonResponse({"data": response_data})

关键修改说明:

  • 用requests.get()发起真实API请求,替换原代码中直接赋值URL的错误操作
  • 改用字典response_data构建目标格式:
    • 直接将API返回的所有数据存入results数组
    • 基于results数组的实际长度设置length_of_results字段
  • 增加异常处理,应对网络错误、API不可用等异常情况

修正后返回的格式将与你期望的一致:

{"data": {"results": [{"id": 544,"name": "User_1"},{"id": 218,"name": "User_2"},...], "length_of_results": 25}}

内容的提问来源于stack exchange,提问作者rat4090

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 03:15:36