Django模板中以表格渲染多方法返回值失败,如何解决?
解决Django表格渲染无内容的问题
问题根源:你用
chain(values1, values2)把两个列表的元素扁平化拼接成了单个数值的列表(比如[3588.20, 5018.75, 3488.16, 3588.20, 5018.75, 3488.99])。模板循环时每个value是单个数字,访问value.0和value.1自然取不到任何值,导致表格无内容。修复步骤:
- 修改
views.py中的all_values,用zip()函数将两个列表的对应元素配对成元组:def test(request): values1 = filter_text.total_cost_fruit() values2 = filter_text.total_cost_fruit2() # 用zip配对两个列表对应位置的元素,生成元组列表 all_values = list(zip(values1, values2)) # 若两个列表长度不一致,用zip_longest避免丢失元素,缺失位置可指定填充值 # from itertools import zip_longest # all_values = list(zip_longest(values1, values2, fillvalue=0)) context = { "values1": values1, "values2": values2, "all_values": all_values, } return render(request, "main/test.html", context) - 模板代码无需修改,此时循环
all_values时,每个value是包含两个元素的元组,{{value.0}}和{{value.1}}会正确渲染对应数值。
- 修改
额外检查:确保
filter_text是对应类的实例——因为total_cost_fruit和total_cost_fruit2是带self的实例方法,若直接用类名调用会抛出参数错误,需先实例化类(比如filter_text = YourClassName())。
内容的提问来源于stack exchange,提问作者mightycode Newton
相关产品推荐
相关产品推荐

