需要帮助迭代通过每一行在SQLite数据库渲染到html模板



我正在使用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()返回一个列表。

因为companyName、name和portfolio是从同一个表中获取的,所以它们的长度是相同的。在views。py

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

应该可以

最新更新