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

使用Flask、Jinja展示SQLite数据库中所有用户发帖的实现问题

解决方案

不需要修改Feed类为多对多关系,你现有的MyFeed和User的一对多关联完全可以满足需求,问题出在路由传参和模板遍历的逻辑错误,按以下步骤调整即可:

1. 修正Flask路由逻辑

你当前在GET请求中已经查询了全部Feed数据MyFeed.query.all(),但没有把这个数据传递给模板,只传入了当前登录用户current_user,所以模板只能读取到当前用户发布的内容。修改后代码如下:

@views.route('/tweets', methods = ['GET', 'POST'])
@login_required
def tweet():
    # 不管GET还是POST请求,最终都要返回全量Feed列表,先统一查询
    all_feeds = MyFeed.query.order_by(MyFeed.date.desc()).all()
    if request.method == 'POST':
        my_feed = request.form.get('my_feed')
        if len(my_feed) < 1:
            flash('Tweet is too short!', category='error')
        else:
            new_tweet = MyFeed(data=my_feed, user_id=current_user.id)
            db.session.add(new_tweet)
            db.session.commit()
            flash('Tweet added!', category='success')
            # 发布新内容后刷新列表
            all_feeds = MyFeed.query.order_by(MyFeed.date.desc()).all()

    # 把全量Feed列表传递给模板
    return render_template("tweets.html", user=current_user, all_feeds=all_feeds)

2. 修正HTML模板遍历逻辑

原模板遍历的是当前用户的Feed列表user.feeds,且所有帖子都固定显示当前登录用户的信息,需要改为遍历传入的全量Feed列表,通过每个Feed关联的用户属性读取发布者信息:

<h1 align="center">Feed</h1>
<ul class="list-group list-group-flush" id="feeds">
{% for my_feed in all_feeds %}
  <li class="list-group-item">
    <div>
      <!-- 取当前Feed对应的发布者信息,不是固定用当前登录用户user -->
      <b class="pull-center">{{my_feed.user.first_name}}</b>
     <p class="pull-right">{{my_feed.date}}</p>
     <p>{{my_feed.user.email}}</p>
    </div>
   <br>
    {{ my_feed.data }}
  </li>
{% endfor %}
</ul>

3. 确认模型关系配置

确保你的MyFeed模型类中已经定义了和User的关联关系,示例配置如下:

class MyFeed(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    data = db.Column(db.String(10000))
    date = db.Column(db.DateTime(timezone=True), default=func.now())
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    # 新增下面这行关联关系,就可以通过my_feed.user拿到发布者信息
    user = db.relationship('User', backref='feeds')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 17:45:04