Yakir Mordehay
Yakir Mordehay

Reputation: 257

return all values from a for loop to a template on django

I'm trying to to present django script in a template on django. The simple script run on array and print the settings for each value in the array using json query's:

for x in range(numRPAs):
   # Get the item number
   print ("item: ", parsResults['innerSet'][0]['rpasState'][x]['rpaUID']['rpaNumber'])
   # Get the item status
   print ("Status: ", parsResults['innerSet'][0]['rpasState'][x]['status'])
   # Get the item versions
   print ("Version: ", parsResults['innerSet'][0]['rpasState'][x]['version']['version'])

This works well in python shell. I'm trying to use django so i wrote the following view part:

def monitor(request):
  for x in range(item):
    # Get the item number
    itemNumber = (parsResults['innerSet'][0]['rpasState'][x]['rpaUID']['rpaNumber'])
    # Get the item status
    itemStatus = (parsResults['innerSet'][0]['rpasState'][x]['status'])
    # Get the RPA versions
    itemVersion = (parsResults['innerSet'][0]['rpasState'][x]['version']['version'])
return render(request, 'monitorLabs.html', {'itemNumber' : itemNumber, 'itemStatus' : itemStatus, 'itemVersion' : itemVersion, })

How should my template file look like in order to run on every x and print every query? the "return" obviously run only once (even if it's inside the for loop).

So the following print only the first item:

<body>
<h1>Tile goes here</h1>
    <p>item number: {{ itemNumber }}</p>
    <p>item status: {{ itemStatus}}</p>
    <p>item version: {{ itemVersion}}</p>

I was able to create an array for each properties and then use a simple for loop, for example:

    {% for x in rpaNumber %}
       <p>RPA number: {{ x }}</p>
    {% endfor %}

But I wont to avoid doing that since it required a lot of ordering to do after that.

Is there an other way to perform this task? Thanks in advance, Yakir.

Upvotes: 1

Views: 701

Answers (1)

EchoGlobal.tech
EchoGlobal.tech

Reputation: 704

view

def monitor(request):
  items = []
  for x in range(item):
    items_dict = {
    'itemNumber': parsResults['innerSet'][0]['rpasState'][x]['rpaUID']['rpaNumber'],
    'itemStatus': parsResults['innerSet'][0]['rpasState'][x]['status'],
    'itemVersion': parsResults['innerSet'][0]['rpasState'][x]['version']['version']
    }
    items.append(items_dict)
return render(request, 'monitorLabs.html', {'items' : items})

template

<body>
<h1>Tile goes here</h1>
    {% for item in items %}
      <p>item number: {{ item.itemNumber }}</p>
      <p>item status: {{ item.itemStatus}}</p>
      <p>item version: {{ item.itemVersion}}</p>
    {% endfor %}

I hope this helps you.

Upvotes: 1

Related Questions