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

Django视图未传递完整数组至模板:仅显示单条数据问题咨询

Django模板仅显示单条XML数据的问题解决

问题描述

我是Django新手,已完成XML文件解析,终端打印时能看到XML中的全部约15条标题与链接,但在模板中仅能显示单条标题和链接。不清楚为何数组arr与print输出结果不同,请问我哪里出错了?

相关代码

views.py

def madxmlparser(request):
    url = 'https://www.example.com/rss/current.xml'
    tree = ET.parse(urlopen(url))
    root = tree.getroot()

    for entry in root.findall('{http://www.w3.org/2005/Atom}entry'):
        title = entry.find('{http://www.w3.org/2005/Atom}title').text
        link = entry.find('{http://www.w3.org/2005/Atom}link').attrib['href']
        arr = [title, link]
        print(title, link)
    return render(request, 'madxmlparser.html', {'arr':arr})

模板文件(madxmlparser.html)

{% for i in arr %}
  <div class="row">
    {{ i }}
  </div>
{% endfor %}

问题原因与解决方法

错误原因

你在for循环里每次都重新给arr赋值为[title, link],循环每执行一次,arr就会被当前条目的标题和链接覆盖。循环结束后,arr只保留最后一条数据的两个字段,所以模板只能遍历这两个值,呈现单条内容的片段。

修正方案

  1. 初始化列表并批量存储数据:先创建空列表,在循环里把每条数据以字典形式追加进去,保存所有条目。
  2. 调整模板遍历逻辑:遍历整个条目列表,逐个取出每条数据的标题和链接。

修正后的views.py代码:

def madxmlparser(request):
    url = 'https://www.example.com/rss/current.xml'
    tree = ET.parse(urlopen(url))
    root = tree.getroot()

    # 初始化空列表存储所有条目
    entries = []
    for entry in root.findall('{http://www.w3.org/2005/Atom}entry'):
        title = entry.find('{http://www.w3.org/2005/Atom}title').text
        link = entry.find('{http://www.w3.org/2005/Atom}link').attrib['href']
        # 追加单条完整数据
        entries.append({'title': title, 'link': link})
        print(title, link)
    return render(request, 'madxmlparser.html', {'entries': entries})

修正后的模板代码:

{% for item in entries %}
  <div class="row">
    <a href="{{ item.link }}">{{ item.title }}</a>
  </div>
{% endfor %}

修改后模板就能遍历所有15条数据,每条都显示对应的标题和链接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 23:22:13