Siddharth Singh
Siddharth Singh

Reputation: 105

Django : render not passing context variable to template

I have this views function to fetch userid and accountnumber from AWS Dynamodb :

 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 = list(f.items())
  return render('useradd.html',{'rows': rows})

I have tried almost everything but the rows value is just not getting passed to my template. I even tried passing a simple string value and even that is not getting passed. This is my template table where I wish to display the userid and accountnum.

 <div class="mytable">
   <table>
    <thead>
    <tr>
    <th>Account #</th>
    <th>User Id</th>
    </tr>
    </thead>
   <tbody>
      {% for row in rows %}
   <tr>
    <td>{{ row.AccountNum }}</td>
    <td>{{ row.UserId }}</td>
   </tr>
        {% endfor %}
   </table>
 </div>

When I hit the template , nothing shows up. No values are getting displayed except the table headings. Why is render not passing the context variable (list value)from my views to template ? I have been stuck with for about 6 hours ! Can someone resolve this issue ?

Upvotes: 1

Views: 6257

Answers (1)

Exprator
Exprator

Reputation: 27523

return render(request,'useradd.html',{'rows': rows})

you need to pass request as first parameter,

Upvotes: 2

Related Questions