我目前正在开发一个应用程序,该应用程序可能会访问另一个应用程序的静态数据库。这两个应用程序是独立的,但共享相同的数据库。 因为我绕过了模型类,所以我很想在我的视图中执行一些原始的sql(精确到postgrres)查询。 但是我的模板上没有返回任何结果 这是视图和模板代码
#views code
def receipt(request):
cursor = connection.cursor()
# Data retrieval operation
cursor.execute("SELECT * FROM quickpay_client_transactions")
transactions = cursor.fetchall()
return render(request, 'receipt.html', {"transactions":transactions})
#Templates code snippet
{% for trans in transactions %}
<tr>
<td>
{{trans.id}}
</td>
<td></td>
<td>{{trans.amount}}</td>
<th>{{trans.reference}}</th>
<td>
<span class="label label-success">Success</span>
</td>
<th>{{trans.t_stamp}}</th>
</tr>
{% endfor %}
答案 0 :(得分:3)
首先检查您是否收到任何结果
transactions = cursor.fetchall()
第二类交易应该是列表
使用虚拟数据对工作代码进行示例:
from django.shortcuts import render
def index(request):
transactions = [{"id":1},{"id":2}]
return render (request, 'test/index.html', {"transactions":transactions})
HTML:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
Test
{% for trans in transactions %}
<tr>
<td>
{{trans.id}}
</td>
</tr>
{% endfor %}
</body>
</html>
或者你的sql数据可能不在str中: 试试这个
transactions = [to_string(x) for x in cursor.fetchall()]
import datetime
import decimal
def to_string(x):
a = []
for y in x:
if type(y) is datetime.datetime:
a.append(str(y))
elif type(y) is decimal.Decimal:
a.append(str(y))
elif type(y) is unicode:
a.append(y.encode("UTF-8", "ignore"))
elif type(y) is float:
a.append(str(y))
else:
a.append(y)
return a