如何在表格行中显示模板上的视图输出?

时间:2018-02-14 05:42:46

标签: python django django-templates django-views

我使用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的新手,并且不太了解这些概念。请原谅我这个问题听起来很傻。谁能帮帮我吗 ?我遇到了这个问题。提前谢谢。

1 个答案:

答案 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>