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

Flask如何将API获取处理后的数据传递到HTML并在/test路由渲染

解答

1. 实现/test路由渲染与数据传递

首先确保你的Flask项目根目录下存在templates文件夹,将x.html放入该文件夹,这是Flask默认读取模板文件的路径。

修改后的x.py代码

from flask import Flask, render_template
import requests

app = Flask(__name__)

@app.route('/test', methods = ['GET'])
def get_from_api():
    url = "https://xxxx"
    API_KEY = "xxxx"
    params = {
    'token' : API_KEY
    }
    response = requests.get(url, params).json()
  
    city = response['city']
    state = response['region']
    postal = response['postal']
    country = response['country']
    location = response['loc']
    data = {
        "city" : city,
        "state" : state,
        "postal" : postal,
        "country" : country,
        "location" : location
    }
    # 渲染模板并传递处理好的数据
    return render_template('x.html', **data)

修改后的x.html代码

使用Flask内置的Jinja2模板语法替换占位内容即可:

<div class = "element_val">
                <li><div id = "city">{{ city }}</div></li>
                <li><div id = "state">{{ state }}</div></li>
                <li><div id = "postal">{{ postal }}</div></li>
                <li><div id = "country">{{ country }}</div></li>
                <li><div id = "location">{{ location }}</div></li>
</div>

2. 路由中做数据预处理的合理性

  • 预处理逻辑简单、代码量少的场景下,直接写在路由函数中是合理的:逻辑集中无需跳转,维护成本低。
  • 如果预处理逻辑超过10行、涉及多个外部依赖、有复用需求,就不适合放在路由中,会导致路由函数臃肿,不符合单一职责原则。

3. 多预处理步骤的优化方案

  • 拆分业务逻辑到独立模块:把API调用、字段提取、数据校验等逻辑抽成独立的工具函数,放在单独的utils.py或者service.py文件中,路由只负责接收请求、调用工具函数、返回响应,保持路由代码清爽。
  • 增加缓存机制:如果第三方API返回的数据实时性要求不高,可以用缓存存储预处理后的结果,避免每次请求都重复调用API和处理数据,大幅提升响应速度。
  • 拆分校验逻辑:针对API返回数据的合法性校验、缺省值处理等逻辑单独封装,避免和业务处理逻辑耦合。
  • 异步处理:如果预处理耗时很长,可使用异步任务队列处理耗时操作,避免阻塞请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 02:24:02