Ich habe es versucht:
list1 = [{"username": "abhi", "pass": 2087}]
return render_template("file_output.html", list1=list1)
In der Vorlage:
<table border=2>
<tr>
<td>
Key
</td>
<td>
Value
</td>
</tr>
{% for dictionary in list1 %}
{% for key in dictionary %}
<tr>
<td>
<h3>{{ key }}</h3>
</td>
<td>
<h3>{{ dictionary[key] }}</h3>
</td>
</tr>
{% endfor %}
{% endfor %}
</table>
Der obige Code teilt jedes Element in mehrere Zeichen auf:
[
{
"
u
s
e
r
...
Ich habe die obige verschachtelte Schleife in einem einfachen Python-Skript getestet und sie funktioniert einwandfrei, aber nicht in der Jinja-Vorlage.
dict_item.items
stattdessen verwenden) oder es würde einCould not parse the remainder: '()' from 'dict_item.items()'
dict.key
anstelle des konventionellen indiziertdict["key"]
.dict["key"]
dies bei Ihnen nicht funktioniert, verwenden Sie keine Jinja-Vorlagen, sondern Django-Vorlagen. Siehe Zugreifen auf Wörterbuch durch Schlüssel in Django VorlageAls Nebenbemerkung zu @Navaneethans Antwort
Jinja2
können "reguläre" Elementauswahl für die Liste und das Wörterbuch vorgenommen werden, vorausgesetzt , wir kennen den Schlüssel des Wörterbuchs oder die Positionen der Elemente in der Liste.Daten:
parent_dict = [{'A':'val1','B':'val2', 'content': [["1.1", "2.2"]]},{'A':'val3','B':'val4', 'content': [["3.3", "4.4"]]}]
in Jinja2-Iteration:
{% for dict_item in parent_dict %} This example has {{dict_item['A']}} and {{dict_item['B']}}: with the content -- {% for item in dict_item['content'] %}{{item[0]}} and {{item[1]}}{% endfor %}. {% endfor %}
Die gerenderte Ausgabe:
This example has val1 and val2: with the content -- 1.1 and 2.2. This example has val3 and val4: with the content -- 3.3 and 4.4.
quelle
{% for i in yourlist %} {% for k,v in i.items() %} {# do what you want here #} {% endfor %} {% endfor %}
quelle
lis
handelt es sich nicht um eine Liste, wenn der von Ihnen freigegebene Code ausgeführt wird.Nur eine Randnotiz für ein ähnliches Problem (wenn wir nicht durchlaufen wollen):
Hier ist ein Beispiel:
{% set key = target_db.Schema.upper()+"__"+target_db.TableName.upper() %} {{ dict_containing_df.get(key).to_html() | safe }}
Es könnte offensichtlich sein. Aber wir brauchen keine geschweiften Klammern innerhalb der geschweiften Klammern. Die reine Python-Syntax funktioniert. (Ich poste, weil ich mich verwirrt habe ...)
Alternativ können Sie einfach tun
{{dict[target_db.Schema.upper()+"__"+target_db.TableName.upper()]).to_html() | safe }}
Es wird jedoch ein Fehler ausgegeben, wenn kein Schlüssel gefunden wird. Also besser
get
in Jinja zu verwenden.quelle
**get id from dic value. I got the result.try the below code** get_abstracts = s.get_abstracts(session_id) sessions = get_abstracts['sessions'] abs = {} for a in get_abstracts['abstracts']: a_session_id = a['session_id'] abs.setdefault(a_session_id,[]).append(a) authors = {} # print('authors') # print(get_abstracts['authors']) for au in get_abstracts['authors']: # print(au) au_abs_id = au['abs_id'] authors.setdefault(au_abs_id,[]).append(au) **In jinja template** {% for s in sessions %} <h4><u>Session : {{ s.session_title}} - Hall : {{ s.session_hall}}</u></h4> {% for a in abs[s.session_id] %} <hr> <p><b>Chief Author :</b> Dr. {{ a.full_name }}</p> {% for au in authors[a.abs_id] %} <p><b> {{ au.role }} :</b> Dr.{{ au.full_name }}</p> {% endfor %} {% endfor %} {% endfor %}
quelle