반응형
진자 템플릿의 사전 목록을 통해 반복하는 방법은 무엇입니까?
노력했습니다.
list1 = [{"username": "abhi", "pass": 2087}]
return render_template("file_output.html", list1=list1)
템플릿에서:
<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>
위의 코드는 각 요소를 여러 문자로 분할하는 것입니다.
[
{
"
u
s
e
r
...
위의 네스트 루프를 간단한 파이썬 스크립트로 테스트해보니 정상적으로 작동하지만 진자 템플릿에서는 작동하지 않습니다.
데이터:
parent_list = [{'A': 'val1', 'B': 'val2'}, {'C': 'val3', 'D': 'val4'}]
진자2 반복에서:
{% for dict_item in parent_list %}
{% for key, value in dict_item.items() %}
<h1>Key: {{key}}</h1>
<h2>Value: {{value}}</h2>
{% endfor %}
{% endfor %}
참고:
받아쓰기 항목 목록이 있는지 확인합니다.만약 당신이UnicodeError
딕트 내부에 유니코드 형식이 포함된 값일 수 있습니다.그 문제는 당신의 안에서 해결될 수 있습니다.views.py
만약 딕트가unicode
객체, 인코딩해야 합니다.utf-8
.
@Navaneethan의 대답에 대한 부차적인 메모로서,Jinja2
사전 키 또는 목록에 있는 항목의 위치를 알고 있는 경우 목록 및 사전에 대해 "정기적" 항목 선택을 수행할 수 있습니다.
데이터:
parent_dict = [{'A':'val1','B':'val2', 'content': [["1.1", "2.2"]]},{'A':'val3','B':'val4', 'content': [["3.3", "4.4"]]}]
진자2 반복에서:
{% 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 %}
렌더링된 출력:
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.
{% for i in yourlist %}
{% for k,v in i.items() %}
{# do what you want here #}
{% endfor %}
{% endfor %}
유사한 문제에 대한 참고 사항일 뿐입니다(루프오버를 원하지 않는 경우).
진자 템플릿 내에서 변수 키를 사용하여 사전을 찾는 방법은 무엇입니까?
다음은 예입니다.
{% set key = target_db.Schema.upper()+"__"+target_db.TableName.upper() %}
{{ dict_containing_df.get(key).to_html() | safe }}
당연할 수도 있습니다.하지만 우리는 곱슬머리 교정기 안에 곱슬머리 교정기가 필요하지 않습니다.스트레이트 파이썬 구문이 가능합니다. (제가 헷갈려서 글을 올립니다...)
또는 간단히 할 수 있습니다.
{{dict[target_db.Schema.upper()+"__"+target_db.TableName.upper()]).to_html() | safe }}
그러나 키를 찾을 수 없으면 오류가 발생합니다.사용하기에 더 좋습니다.get
진자로
**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 %}
언급URL : https://stackoverflow.com/questions/25373154/how-to-iterate-through-a-list-of-dictionaries-in-jinja-template
반응형
'source' 카테고리의 다른 글
M1 도커 미리 보기 및 키클로크 'image' 플랫폼(linux/amd64)이 탐지된 호스트 플랫폼(linux/arm64/v8)과 일치하지 않음' 문제 (0) | 2023.08.05 |
---|---|
안드로이드 구글 지도 java.lang.NoClassDefFoundError: 확인 실패: Log/apache/http/ProtocolVersion (0) | 2023.08.05 |
스프링 부트에서 rest 컨트롤러가 작동하지 않음 (0) | 2023.08.05 |
모듈 간 변수를 만드는 방법은 무엇입니까? (0) | 2023.08.05 |
Flutter : Flutter Project에서 Android minSdkVersion을 변경하는 방법은 무엇입니까? (0) | 2023.08.05 |