Django调用外部API获取数据后模板无法渲染Id与QuestionTitle字段如何解决
问题修复方案
根因确认
你的判断完全正确,外部API返回的Message字段是经过二次JSON序列化的字符串,并非可直接遍历的数组结构,因此模板循环无法读取到对应字段。
修复步骤
1. 修改views.py逻辑
首先导入Python内置的json处理模块,对Message字段做反序列化处理,将字符串转换为Python列表对象:
import json import requests def GetQuestion(request): headers = {'Content-Type': 'application/json', 'Authorization': 'Basic XXXXXXXXXX='} body = { "Tenant" : "devED" } GetQuestion_response = requests.post('https://url_name.com/api/GetQuestions', headers=headers, json=body).json() # 新增:反序列化Message字段的JSON字符串为可遍历列表 if GetQuestion_response.get("Successful", False): try: GetQuestion_response["Message"] = json.loads(GetQuestion_response["Message"]) except json.JSONDecodeError: # 异常处理:如果Message格式非法,置为空列表避免模板报错 GetQuestion_response["Message"] = [] GetQuestion_dict={ 'GetQuestion_response' : GetQuestion_response, } return render(request, 'app/GetQuestion.html', GetQuestion_dict)
注意:模板路径分隔符建议用正斜杠
/兼容不同操作系统,避免Windows反斜杠的转义问题。
2. 模板无需修改
你原有模板的循环逻辑完全兼容转换后的Message列表,修改后端代码后即可正常输出Id和QuestionTitle字段。
内容的提问来源于stack exchange,提问作者Kanchon Gharami
相关产品推荐
相关产品推荐

