2017-12-21 5 views
0

나는 다음과 같은 사전의 키를 가지고 :루프에서 정렬하지 않고 키 사전의 순서를 유지하는 방법은 무엇입니까?

{% set ReportList = { 
    'T00004' : {'Title': 'Letter of Confirmation Loan'}, 
    'T00002' :{'Title': 'Repayment Schedule'}, 
    'T00010': {'Title': 'Letter of Hypothec'} } 
    %} 

나는이 사전을 통해 루프를 원하지만 나는 그것이 정렬 선수로 사전의 순서를 유지하려면, 그래서이 T00004, T00002, T00010 같은 순서로해야한다. 따라서 다음 루프를 시도했다.

{%for key in ReportList %} 
{% set value = ReportList.get(key,{})%} 
<tr class="link" onclick="CustomClickView('{{value.Title}}','Template/{{key}}')"> 
    <td width="10%">{{key}}</td> 
    <td width="90%">{{value.Title}}</td> 
</tr> 
{%endfor%} 

그러나 위에서 예상 한대로 T00002, T00004, T00010으로 나타납니다.

어떻게 루프 내에서 정렬하지 않고 키 사전의 순서를 유지할 수 있습니까? 감사. 그것은 쉽게

+0

'django'? 그렇다면 태그 목록에 추가하는 것이 좋습니다. – Adelin

+0

@Adelin, 그것은'jinja2'입니다. –

+0

OrderedDict 사용을 고려하십시오 – AndreyF

답변

1

, 당신은 예를 들어, 템플릿에 OrderedDict 전달해야합니다

# .py 
render("index.html", OrderedDict=OrderedDict) 

# .html 
{% set ReportList = OrderedDict({ 
    'T00004' : {'Title': 'Letter of Confirmation Loan'}, 
    'T00002' :{'Title': 'Repayment Schedule'}, 
    'T00010': {'Title': 'Letter of Hypothec'} }) 
%} 

은 그럼 그냥 일반 OrderedDict처럼 사용할 수 있습니다.

+0

그 방법은 정말 대단한 일입니다, 대단히 감사합니다 :) –

0
import pprint 

reportList = { 
    'T00004' : {'Title': 'Letter of Confirmation Loan'}, 
    'T00002' :{'Title': 'Repayment Schedule'}, 
    'T00010': {'Title': 'Letter of Hypothec'} } 


pprint.pprint(reportList.items()) 

# dict_items([ 
# ('T00004', {'Title': 'Letter of Confirmation Loan'}) 
# ('T00002', {'Title': 'Repayment Schedule'}), 
# ('T00010', {'Title': 'Letter of Hypothec'})]) 

for num,d in reportList.items(): 
    print(num) 

# T00004 
# T00002 
# T00010 
+0

appologise, 질문은'python'보다는'jinja2'이므로'jinja2' 문맥에서 어떻게 할 수 있습니까? 감사. –

+0

코드의 세부 사항을 이해하는 것이 약간 어렵 기 때문에 코드가 아닌 일부 설명 세부 정보를 추가 할 수 있습니까? 감사. –

관련 문제