2015-08-19 13 views
5

Jak mogę zapętlić listę json z jinja2?Jinja2 - Jak zapętlić listę json?

mam tej listy json,

[{ "first_name": "Jan", "last_name": "Smith", "user_id": 4, "adres": null}, {” first_name ":" Jane "," last_name ":" Heart "," user_id ": 5, " address ": null}, {" first_name ":" Dom "," last_name ":" Robinsons ", " user_id " 6, "adres": null}, { "imię": "Pete", "LAST_NAME": "ręki", "USER_ID": 7, "adres": puste}]

page.html ,

<table> 
    {% for user in users %} 
    <tr><td>{{ user.first_name }}</td></tr> 
    {% endfor %} 
</table> 

rezultacie

<table> 

    <tr><td></td></tr> 

    <tr><td></td></tr> 

    <tr><td></td></tr> 

    <tr><td></td></tr> 
    ... 

Jakieś pomysły?

Odpowiedz

7

Twoja lista json zawiera słowniki; musisz uzyskać dostęp do elementów słownika w inny sposób niż członkowie klasy; spróbuj:

<tr><td>{{ user['first_name'] }}</td></tr> 

to działa na mnie (Python 3.4 i pyton 2,7)

import json 
from jinja2 import Template 

json_str = '''[{"first_name": "John", "last_name": "Smith", "user_id": 4, 
    "address": null}, {"first_name": "Jane", "last_name": "Heart", 
    "user_id": 5, "address": null}, {"first_name": "Dom", 
    "last_name": "Robinsons", "user_id": 6, "address": null}, 
    {"first_name": "Pete", "last_name": "Hand", "user_id": 7, 
    "address": null}]''' 

users = json.loads(json_str) 

tmpl = Template(''' 
<table> 
    {% for user in users %} 
    <tr><td>{{ user['first_name'] }}</td></tr> 
    {% endfor %} 
</table> 
''') 

print(tmpl.render(users = users)) 

wyjściowa:

<table> 

    <tr><td>John</td></tr> 

    <tr><td>Jane</td></tr> 

    <tr><td>Dom</td></tr> 

    <tr><td>Pete</td></tr> 

</table> 
+0

'ty json lista zawiera słowniki' - co to jest słownik? Mam na myśli, jak rozpoznać dane/json zawiera słownik. – laukok

+1

Słownik to kluczowa kolekcja wartości. w python; 'd = {klucz: wartość}'. –

+0

to też jest json, prawda? jak ten - '{" key ":" value "}' nie jest jsonem? – laukok

0

prosty json iteracja w jinja2

<table> 
    <tr> 
     {% for key in users[0] %} 
     <th>{{ key }}</th> 
     {% endfor %} 
    </tr> 

    {% for user in users %} 
    <tr> 
     {% for key in user %} 
     <td>{{ user[key] }}</td> 
     {% endfor %} 
    </tr> 
    {% endfor %} 
</table>