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

Flask原生API仅返回单条帖子,如何获取数据库全部帖子?

解决Flask API只返回第一条帖子的问题

嘿,我明白你遇到的问题啦!你现在只能拿到第一条帖子,核心原因是你在for循环里直接用了return——函数一旦执行return语句就会立刻终止,循环只跑了第一次就结束了,后面的帖子根本没机会被处理~

咱们来修改一下代码,先把所有帖子的信息收集到一个列表里,最后再统一返回:

from .db import get_db
from flask import jsonify, Blueprint

bp = Blueprint("api", __name__, url_prefix="/api")

@bp.route("/posts", methods=("GET",))
def get_posts():
    db = get_db()
    # 把SQL语句拆成多行更易读,不影响执行
    posts = db.execute(
        'SELECT p.id, title, body, created, author_id, username'
        ' FROM post p JOIN user u ON p.author_id = u.id'
        ' ORDER BY created DESC'
    ).fetchall()
    
    # 初始化一个空列表,用来存放所有帖子的字典数据
    all_posts = []
    for post in posts:
        # 把每个帖子的信息转成字典,添加到列表中
        all_posts.append({
            "title": post["title"],
            "body": post["body"],
            "author": post["username"]
        })
    
    # 最后返回整个列表的JSON响应,这样前端就能拿到所有帖子啦
    return jsonify(all_posts)

简单说下改动点:

  • 新增了all_posts列表,用来存储所有帖子的结构化数据
  • 循环里不再直接return,而是把每个帖子的字典追加到列表中
  • 循环结束后,用jsonify返回整个列表,这样就会生成一个JSON数组,包含所有帖子的信息

这样修改后,你的API就能返回数据库里所有帖子的JSON响应啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 09:27:34