需要帮助遍历 SQLite 数据库中的每一行以呈现为 html 模板
Need help iterating through each row in SQLite DB to render to html template
我将 Django 框架与 SQLite 数据库一起使用。我在我的 views.py 中使用 SQL 查询,并连接该数据以在我的 dashboard.html 模板中呈现在前端。
我在遍历数据库中的每一行时遇到问题 table '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() returns 一个列表。
由于 companyName、name 和 portfolio 是从同一个 table 中获取的,因此它们的长度相同。所以在 views.py
people_data = []
for i in range(len(companyName)):
data = {
'companyname': companyname[i],
'name': name[i],
'portfolio': portfolio[i]
}
people_data.append(data)
这应该有效
我将 Django 框架与 SQLite 数据库一起使用。我在我的 views.py 中使用 SQL 查询,并连接该数据以在我的 dashboard.html 模板中呈现在前端。
我在遍历数据库中的每一行时遇到问题 table '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() returns 一个列表。
由于 companyName、name 和 portfolio 是从同一个 table 中获取的,因此它们的长度相同。所以在 views.py
people_data = []
for i in range(len(companyName)):
data = {
'companyname': companyname[i],
'name': name[i],
'portfolio': portfolio[i]
}
people_data.append(data)
这应该有效