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

Flask+Jinja中如何获取并展示API返回的全部嵌套数据

解决嵌套数据获取与模板展示问题

1. 调整Park模型结构

不要将活动名称拼接成字符串,而是在模型中定义列表类型字段存储所有活动名称,示例:

class Park:
    def __init__(self, name, activities=None):
        self.name = name
        self.activities = activities or []  # 用列表存储所有活动名称

2. 从NPS API提取所有活动数据

调用API后,遍历返回的activities数组,提取每个活动的名称存入Park实例的列表:

import requests

def fetch_park_data():
    api_url = "你的NPS API接口地址"
    response = requests.get(api_url)
    park_data = response.json()
    
    parks = []
    for item in park_data["data"]:
        # 遍历activities数组,提取每个活动的name字段
        activity_names = [act["name"] for act in item.get("activities", [])]
        park = Park(
            name=item["fullName"],
            activities=activity_names
        )
        parks.append(park)
    return parks

3. Flask视图传递数据到模板

在视图函数中获取处理后的Park列表,传给Jinja模板:

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/parks')
def show_parks():
    parks = fetch_park_data()
    return render_template('parks.html', parks=parks)

4. Jinja模板循环展示活动

在模板中通过双层循环遍历公园列表和每个公园的活动列表:

<!-- parks.html -->
<h1>国家公园活动列表</h1>
{% for park in parks %}
    <div class="park">
        <h2>{{ park.name }}</h2>
        <h3>可参与活动:</h3>
        <ul>
            {% for activity in park.activities %}
                <li>{{ activity }}</li>
            {% endfor %}
        </ul>
    </div>
{% endfor %}

排查要点

  • 若模板无内容,先在视图函数中打印park.activities确认是否获取到数据;
  • 核对API返回的字段名是否正确,比如部分接口可能用activity而非activities。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 18:46:05