python - 需要帮助迭代 SQLite DB 中的每一行以呈现为 html 模板

标签 python django database sqlite django-templates

我正在使用 Django 框架和 SQLite DB。我在views.py 中使用SQL 查询,并连接该数据以在dashboard.html 模板的前端上呈现。

我在遍历数据库表“scrapeddata”中的每一行时遇到问题。当我查看仪表板时,正在呈现的数据全部集中在一个 div 中。我希望数据库中的每一行都在一个 div 中呈现。我尝试在views.py 中放置一个for 循环,但是当我这样做时,我只从dashboard.html 上呈现的数据库中获取一行。感谢任何帮助,谢谢。

views.py:

def dashboard(request):
    connection = sqlite3.connect('db.sqlite3')
    cursor = connection.cursor()
    
    col1 = '''SELECT companyname FROM scrapeddata ORDER BY companyname ASC'''
    cursor.execute(col1)
    companyname = cursor.fetchall()

    col2 = '''SELECT name FROM scrapeddata'''
    cursor.execute(col2)
    name = cursor.fetchall()

    col3 = '''SELECT portfolio FROM scrapeddata'''
    cursor.execute(col3)
    portfolio = cursor.fetchall()
    
    people_data = []
    
    data = {
        'companyname': companyname, 
        'name': name, 
        'portfolio': portfolio
        }

    people_data.append(data)
        
    connection.close()
        
    if request.user.is_authenticated:
        return render(request, 'dashboard.html', {'people_data':people_data}) 
    else :
        return redirect('/login') 

dashboard.html: 这是模板中的 for 循环。

  {% for data in people_data %}
     <div>
        <p>{{ data.companyname }}</p>
        <p>{{ data.name }}</p>
        <p>{{ data.portfolio }}</p>

     </div>
  {% endfor %}

最佳答案

问题是 people_data 列表中只有一项:

people_data = []

data = {
    'companyname': companyname, 
    'name': name, 
    'portfolio': portfolio
    }

 people_data.append(data)

您只是附加一个字典,数据字典中的每个字典都是一个项目列表。因为cursor.fetchAll()返回一个列表。

由于公司名称、名称和投资组合是从同一个表中获取的,因此它们的长度相同。所以在views.py中

people_data = []

for i in range(len(companyName)):
     data = {
            'companyname': companyname[i], 
             'name': name[i], 
             'portfolio': portfolio[i]
         }
     people_data.append(data)

这应该有效

关于python - 需要帮助迭代 SQLite DB 中的每一行以呈现为 html 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69384027/

相关文章:

python - 在 python 3.6 中导入 Orange 模块时出错

python - 使用字节移位解码编码的最佳方法

python - Debian8.7 上使用 uwsgi/nginx 的 Django 的内部服务器错误

Mysql - 根据重复的 Table_1 值更新某些 Table_2 值

java - Helloworld 数据库 - android 与 sqlite 的连接

java - 如何从同一个表映射多个@OneToOne 关联

python csv列表比较和添加

python - 如何使用 PySpark 加载 IPython shell

python - 为什么我的 Django 迁移会加载我的 urls.py?

django - "Column ' 创建日期时间 ' cannot be null"Django