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

Flask视图无法展示JSON数据,返回Response 14 bytes [200 OK]问题

问题分析与修复方案

你的代码存在两个核心问题:

1. jsonify() 返回的是 Response 对象,而非可渲染的数据

jsonify(data1) 会生成一个 Flask 的 Response 实例(用于直接返回给客户端的HTTP响应载体),不是JSON字符串或字典。当你把这个对象传给 render_template,模板会直接输出该对象的字符串表示,也就是你看到的 <Response 14 bytes [200 OK]>。

2. GET 请求通常无法获取 JSON 数据

request.get_json() 是从请求体中解析JSON内容,但GET请求默认没有请求体——客户端几乎不会在GET请求中发送JSON数据,因此这里的 data1 大概率为 None。


修复代码

方案1:改用POST请求接收JSON(推荐,符合HTTP规范)

如果需要接收JSON数据,POST请求是更合理的选择:

import json
from flask import Flask, request, render_template

@app.route('/prediction', methods=['GET','POST'])
def predict():
    data = None
    if request.method == 'POST':
        # 从POST请求体解析JSON数据
        data = request.get_json()
    # 将数据转为格式化的JSON字符串传给模板
    return render_template('index.html', data=json.dumps(data, indent=2) if data else "No JSON data received")

对应的HTML模板(用pre标签保留JSON格式):

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Prediction Test</title>
</head>
<body>
    <pre>{{ data }}</pre>
</body>
</html>

方案2:若必须用GET请求,改用查询参数传递数据

如果业务场景确实需要GET请求,应通过URL查询参数传递数据,而非JSON:

from flask import Flask, request, render_template

@app.route('/prediction', methods=['GET','POST'])
def predict():
    # 获取所有查询参数并转为字典
    data = request.args.to_dict()
    return render_template('index.html', data=data)

HTML模板可直接渲染或遍历字典:

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Prediction Test</title>
</head>
<body>
    <div>原始数据:{{ data }}</div>
    <!-- 遍历展示键值对 -->
    {% for key, value in data.items() %}
        <p>{{ key }}: {{ value }}</p>
    {% endfor %}
</body>
</html>

内容的提问来源于stack exchange,提问作者Amanda Choy Siew Wen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 04:31:04