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

Flask视图函数返回列表引发TypeError:返回类型无效问题求助

解决Flask视图返回类型不合法的问题

错误原因

Flask要求视图函数必须返回字符串、字典、元组、Response实例或WSGI可调用对象,你当前直接返回了包含pytube.Stream对象的列表,既不属于合法响应类型,且Stream对象无法直接被JSON序列化,因此触发TypeError。

解决方案

需要将列表中的Stream对象转换为可序列化的字典,再通过Flask的jsonify()方法返回合法的JSON响应:

修改后的完整代码

from flask import Flask, jsonify, request
from pytube import YouTube

app = Flask(__name__)

@app.route('/youtube', methods=['POST'])
def hello_world():
    url = request.form['d_url']
    yt_video = YouTube(url)
    videos = yt_video.streams
    res_list = list(enumerate(videos))
    
    # 将Stream对象转换为可序列化的字典
    processed_streams = []
    for idx, stream in res_list:
        stream_info = {
            "index": idx,
            "itag": stream.itag,
            "resolution": stream.resolution,
            "mime_type": stream.mime_type,
            "filesize_mb": round(stream.filesize_mb, 2)  # 保留两位小数的文件大小(MB)
        }
        processed_streams.append(stream_info)
    
    # 用jsonify返回合法响应
    return jsonify(processed_streams)

if __name__ == "__main__":
    app.run(debug=True)

关键修改点

  • 遍历res_list,提取每个Stream对象的核心属性(如itag、分辨率、媒体类型等)存入字典,确保数据可被JSON序列化。
  • 使用jsonify()方法将处理后的列表包装为Flask认可的Response实例,自动设置正确的Content-Type响应头。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 17:48:19