Reputation: 257
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
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