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

如何在Flask中遍历SQLite表并在HTML页面正确展示数据?

解决Flask页面无法渲染数据库eventdetails表数据的问题

核心问题是views.py的home路由未从数据库查询数据并传递给模板,导致Jinja2循环无数据可渲染。以下是具体解决步骤:

1. 修改views.py,添加数据库查询与数据传递

在home路由中查询所有EventDetails记录,并将结果通过render_template传递给模板:

from flask import render_template
from .models import EventDetails
from . import app

@app.route('/')
def home():
    # 查询eventdetails表的所有记录
    events = EventDetails.query.all()
    # 将查询结果传入模板,变量名events需与模板中的循环变量一致
    return render_template('home.html', events=events)

2. 确认home.html的Jinja2循环语法正确

确保模板中使用正确的变量名循环渲染name字段,示例如下:

<h1>活动名称列表</h1>
<ul>
    {% for event in events %}
        <li>{{ event.name }}</li>
    {% endfor %}
</ul>

注意:模板中的循环变量events必须与views.py中传递的变量名完全匹配。

3. 验证基础配置正确性

  • 确认__init__.py已完成Flask应用与数据库的初始化,包含类似代码:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

def create_app():
    app = Flask(__name__)
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///your_database.db'
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
    db.init_app(app)
    
    with app.app_context():
        from . import views
        db.create_all()  # 确保表已创建
        return app
  • 确认models.py中的EventDetails类正确映射到eventdetails表:
from . import db

class EventDetails(db.Model):
    __tablename__ = 'eventdetails'  # 指定对应数据库表名
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(100), nullable=False)
    # 其他字段根据实际需求定义

完成以上修改后,重启Flask应用,home页面即可渲染出eventdetails表中所有记录的name字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 09:15:06