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

Django使用SQLite查询scrapeddata表逐行渲染到HTML模板问题求助

问题根因

你的代码存在两个核心错误:

  1. 分三次单独查询单个字段,每次fetchall()返回的是对应字段的全量结果列表(比如companyname是包含所有行公司名的列表),你把三个全量列表都塞到同一个字典里,导致每个字段对应的是所有行的内容,渲染时自然挤在一起。
  2. 你只往people_data里append了1次字典,所以people_data整个列表只有1个元素,前端循环只能渲染出1个div。

修正方案

直接一次查询整行数据,逐行组装成字典存入people_data即可,修改后的代码如下:

修正后的views.py代码

def dashboard(request):
    connection = sqlite3.connect('db.sqlite3')
    cursor = connection.cursor()
    
    # 一次查询所有需要的字段,返回的每条结果对应数据库一行数据
    sql = '''SELECT companyname, name, portfolio FROM scrapeddata ORDER BY companyname ASC'''
    cursor.execute(sql)
    all_rows = cursor.fetchall()

    people_data = []
    # 逐行处理组装数据
    for row in all_rows:
        data = {
            'companyname': row[0],
            'name': row[1],
            'portfolio': row[2]
        }
        people_data.append(data)
        
    connection.close()
        
    if request.user.is_authenticated:
        return render(request, 'dashboard.html', {'people_data':people_data}) 
    else :
        return redirect('/login')

前端模板代码无需调整

你原来写的循环逻辑可以直接复用,现在people_data里每个元素对应数据库的一行,循环时每个迭代都会生成一个独立的div,刚好符合需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 13:21:02