我使用Django作为我的Web框架。我编写了一个这样的视图函数..从AWS DynamoDb表中获取UserId和AccountNum键下的所有项目列表:
def dsctbl2(request):
dynamodb=boto3.client('dynamodb', region_name='us-west-2')
response = dynamodb.scan(
TableName='User-Account')
filtered = response['Items']
length = len(filtered)
for k in range(length):
accnum = filtered[k]['AccountNum']['S']
uid = filtered[k]['UserId']['S']
f = dict(AccountNum=accnum,userID=uid)
rows = []
for k,v in f.items():
rows.append(k)
rows.append(v)
return render(request,'useradd.html',{"rows": rows})
rows变量产生一组列表,如下所示:
['AccountNum', '873627867348', 'userID', 'abc']
['AccountNum', '873627867348', 'userID', 'def']
['AccountNum', '038683828978', 'userID', 'ghi']
['AccountNum', '581889263266', 'userID', 'jkl']
['AccountNum', '581889263266', 'userID', 'mno']
['AccountNum', '581889263266', 'userID', 'pqr']
['AccountNum', '581889263266', 'userID', 'stu']
['AccountNum', '977201296795', 'userID', 'vwx']
['AccountNum', '232686542773', 'userID', 'yza']
我需要在HTML模板的表格中显示这些值。 HTML表格摘要如下:
<div class="mytable">
<table style="width:96%" class="table table-responsive">
<thead id="head" class="mdb-color lighten-4">
<tr>
<th></th>
<th class="th-lg">Account #</th>
<th class="th-lg">User Id</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row"></th>
<td>{{rows.AccountNum}}</td>
<td>{{rows.UserId}}</td>
</tr>
</tbody>
</table>
</div>
但是当我在浏览器中点击该html页面时,我只能看到表格标题&#39; UserId&#39;和&#39; AccountNum&#39;。为什么没有打印UserId和AccounNum值?我在html模板中添加了blockcontent和endblock标签。我是Django的新手,并且不太了解这些概念。请原谅我这个问题听起来很傻。谁能帮帮我吗 ?我遇到了这个问题。提前谢谢。
答案 0 :(得分:0)
很少有事情要考虑,请不要在for循环中创建列表,因为这样做不起作用(不能全部保存在列表中)。
rows = []
for each in range(length):
accnum = filtered[k]['AccountNum']['S']
uid = filtered[k]['UserId']['S']
f = dict(AccountNum=accnum,userID=uid)
rows.append(f)
return render(request, 'useradd.html', {'rows': rows})
在html中你可以使用Django模板语言for循环来打印所有变量。
<table>
<thead>
<tr>
<th>#</th>
<th>Account</th>
<th>User</th>
</tr>
</thead>
<tbody>
{% for row in rows %}
<tr>
<td>{{ row.AccountNum }}</td>
<td>{{ row.UserId }}</td>
</tr>
{% endfor %}
</tbody>
</table>