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

Django调用REST API返回数据后模板无法渲染内容问题排查

错误原因及修复方案

1. 上下文变量名不匹配

你在视图层render方法中传递给模板的上下文键为response,但模板中循环遍历的变量是data,二者名称不对应,模板无法读取到对应数据,自然不会输出内容。
两种修复方案二选一:

  • 修改视图代码,调整上下文键为data:
return render(request,'PcPeripherals/api.html',{'data':data})
  • 修改模板代码,调整遍历变量为response:
{% for i in response %}

2. 请求URL格式错误

你实际使用的接口URL存在路径错误:注释的参考URL为#mylocalhosthere/pcp/customer/,实际生效的URL缺失了域名和路径之间的分隔符/,变成#mylocalhostherepcp/customer/?format=json,大概率会导致请求失败,无法拿到有效数据。同时要确认URL前缀是否添加了http://或https://,缺少协议头的话requests无法正常发起请求。
建议增加请求校验逻辑,提前排查请求异常:

os.environ['NO_PROXY'] = '#mylocalhosthere'
def api_view(request):   
    # 补全协议头、路径分隔符
    url = 'http://#mylocalhosthere/pcp/customer/?format=json'
    try:
        r = requests.get(url, timeout=5)
        # 状态码非200时直接抛出异常
        r.raise_for_status()
        # 用requests自带的json解析方法,更稳妥
        data = r.json()
        # 控制台打印数据,确认数据结构正确
        print("接口返回数据:", data)
    except Exception as e:
        print("接口请求失败:", e)
        data = []
    return render(request,'PcPeripherals/api.html',{'data':data})

3. 数据结构不匹配

如果你用的是DRF的分页接口,返回的默认结构为{"count": xxx, "next": xxx, "previous": xxx, "results": [客户数据数组]},此时不能直接遍历根data,需要调整模板遍历对象为data.results:

{% for i in data.results %}
<strong>{{i.id}}</strong>
{% endfor %}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:09:02