在 Django 中显示所有记录
Show all record in Django
我有 SQL 服务器数据库和 table,我创建了一个存储过程来检索 table 中的所有记录并对其进行了测试。存储过程正常工作。但是,当我在我的 Django 程序中调用它并尝试在 html 页面上写入所有记录时,但它只显示最后一条记录。
这是 loginsdata.html
{% block content %}
{% for row in rows %}
<p> <h3>Name: {{row.name}}</h3>
<h3>Email: {{row.email}}</h3>
<h3>Username: {{row.userName}}</h3>
<h3>Password: {{row.password}}</h3>
</p>
</br>
{% endfor %}
{% endblock content %}
这里是 views.py
from django.shortcuts import render
from django.http import HttpResponse
from django.db import connection
import pyodbc
def readLogin(request):
command = 'EXEC GetLogin \'\''
cursor = connection.cursor()
cursor.execute(command)
strHtml = ''
while True:
row = cursor.fetchone()
if not row:
break
userName = row[0]
password = row[1]
name = row[2]
email = row[3]
rows = []
rows.append({'userName': userName, 'password': password, 'name': name, 'email': email})
cursor.close()
return render(request, 'login/loginsdata.html', {'rows': rows})
您每次都在重置 rows
。您应该在 while
循环 之前将其设置为 ,因此:
strHtml = ''
<strong>rows = []</strong>
while True:
row = cursor.fetchone()
if not row:
break
userName = row[0]
password = row[1]
name = row[2]
email = row[3]
# no rows = []
rows.append({'userName': userName, 'password': password, 'name': name, 'email': email})
它显示最后一条记录只是因为你在循环中声明列表试试这个:
# rest of your code
rows = []
while True:
# rest of your code
rows.append({'userName': userName, 'password': password, 'name': name, 'email': email})
我有 SQL 服务器数据库和 table,我创建了一个存储过程来检索 table 中的所有记录并对其进行了测试。存储过程正常工作。但是,当我在我的 Django 程序中调用它并尝试在 html 页面上写入所有记录时,但它只显示最后一条记录。 这是 loginsdata.html
{% block content %}
{% for row in rows %}
<p> <h3>Name: {{row.name}}</h3>
<h3>Email: {{row.email}}</h3>
<h3>Username: {{row.userName}}</h3>
<h3>Password: {{row.password}}</h3>
</p>
</br>
{% endfor %}
{% endblock content %}
这里是 views.py
from django.shortcuts import render
from django.http import HttpResponse
from django.db import connection
import pyodbc
def readLogin(request):
command = 'EXEC GetLogin \'\''
cursor = connection.cursor()
cursor.execute(command)
strHtml = ''
while True:
row = cursor.fetchone()
if not row:
break
userName = row[0]
password = row[1]
name = row[2]
email = row[3]
rows = []
rows.append({'userName': userName, 'password': password, 'name': name, 'email': email})
cursor.close()
return render(request, 'login/loginsdata.html', {'rows': rows})
您每次都在重置 rows
。您应该在 while
循环 之前将其设置为 ,因此:
strHtml = ''
<strong>rows = []</strong>
while True:
row = cursor.fetchone()
if not row:
break
userName = row[0]
password = row[1]
name = row[2]
email = row[3]
# no rows = []
rows.append({'userName': userName, 'password': password, 'name': name, 'email': email})
它显示最后一条记录只是因为你在循环中声明列表试试这个:
# rest of your code
rows = []
while True:
# rest of your code
rows.append({'userName': userName, 'password': password, 'name': name, 'email': email})