如何解决get_context_data中for循环仅展示单组requests_cache解析的JSON数据问题?
问题修复方案
你的代码问题出在循环内直接赋值并返回,导致只处理第一个元素就终止;如果把return移到循环外,又会因为每次赋值覆盖之前的结果,最终只保留最后一个元素。要展示所有解析后的数据,需要把所有结果收集到列表中再传递给context。
修改后的代码:
def get_context_data(self, *, object_list=None, **kwargs): context = super(ShowProjectBudgetList, self).get_context_data(**kwargs) session = requests_cache.CachedSession('project_budget_cache') url = config('REPORT_PROJECT_BUDGET') response = session.get(url=url, auth=UNICA_AUTH).json() # 初始化空列表存储所有解析后的ObjectGUID object_guids = [] for item in response: my_js = json.dumps(item) parsed_json = ReportProjectBudgetSerializer.parse_raw(my_js) obj = parsed_json.ObjectGUID # 将每个结果添加到列表 object_guids.append(obj) # 把整个列表赋值给context,而不是单个元素 context['response_json'] = object_guids return context
关键修改点:
- 新增
object_guids列表,用来累积所有解析出的ObjectGUID值 - 循环内用
append()替代直接赋值,避免覆盖之前的结果 - 将
return context移到循环外部,确保遍历完所有response元素后再返回context - 最终传递给模板的是一个包含所有数据的列表,你可以在模板中通过循环遍历这个列表来展示每一条数据
内容的提问来源于stack exchange,提问作者Kirill_N
相关产品推荐
相关产品推荐

