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

Django中遍历含单个字典的列表无法渲染数据,请求技术指导

Django模板渲染API数据异常排查与解决

问题背景

开发Django应用时,通过API获取数据并解析为JSON,返回结果是包含单个字典的列表。视图层代码如下:

def home(request):
    import requests
    import json
    ####
    api_request=requests.get("xyz...URL")     
    try:
        api=json.loads(api_request.content)
    except Exception as e:
        api="Error"   
    return render(request, 'home.html',{"api": api})

最初使用{{api.values}}能正常渲染出数据:

[{'A': 53875881, 'B': 'cl', 'CH': -0.38, 'CHP': -0.00216, 'CLP': 175.46}]

但想要将数据按分行键值对格式展示时,尝试的两种模板代码均返回空白页面。

问题排查

  1. 第一种模板错误点:
    外层循环{% for element in api %}遍历列表是正确的,但内层循环误用了api.items——api是列表类型,没有items()方法,应该遍历当前循环的element(即列表中的字典)的键值对。

  2. 第二种模板错误点:
    直接对api(列表类型)调用items()方法,列表不存在该方法,导致循环逻辑不执行,页面无输出。

正确实现方法

针对返回的是单个字典的列表这一结构,正确的模板逻辑应该是:先判断是否为错误状态,若为正常数据,先取出列表中的唯一字典,再遍历其键值对。同时可以添加格式优化让输出更规整:

{% extends 'base.html' %}
{% block content %}
{% if api %}
    {% if api == "Error" %}
        <p>检查你的ticker symbol</p>
    {% else %}
        <!-- 取出列表中的第一个字典元素 -->
        {% with data=api.0 %}
            <pre>
{% for key, value in data.items %}
{{ key|ljust:4 }}: {{ value }}
{% endfor %}
            </pre>
        {% endwith %}
    {% endif %}
{% endif %}
{% endblock %}

说明:

  • 使用api.0直接获取列表中的第一个字典元素;
  • {% with %}标签简化变量引用;
  • {{ key|ljust:4 }}使用Django过滤器让键左对齐,保证输出格式整齐;
  • <pre>标签保留换行和空格,让输出符合预期格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 03:52:03