백엔드에서 API로부터 폴더 구조를 얻고 있습니다. 이 구조를 반복적으로 반복하여 모든 폴더를 가져옵니다. 이것들은 모두 '납작한'순서화 된 사전에 저장됩니다. 각 폴더에는 구조, 부모 폴더의 ID, 하위 폴더의 양 및 하위 노드의 수를 정의하는 몇 가지 속성이 저장됩니다.폴더 구조의 '플랫'사전에서 계층 적으로 정렬되지 않은 목록
이제이 주문 된 사전에서 나는 Genshi와 함께 훌륭한 계층 적보기를 만들려고 노력하고 있습니다. 그러나 지금까지 얻은 것 중 가장 멀리는 아래 템플릿입니다. 결과적으로 루트 수준과 한 수준 아래의 단 2 수준이됩니다. 더 깊은 폴더는 두 번째 레벨에 표시됩니다.
나는 데이터를 처음으로 파싱 할 때 많은 관계를 맺을 필요없이 폴더가있는 수준을 얻으 려하지 않고이 작업을 수행하려고합니다. 누구든지 영리한 아이디어가 있습니까? 내가 주석으로
<body>
<div class="main_content">
<h1>Catalogue Tree</h1>
<ul>
<li py:for="nodeId, nodeProps in nodes.iteritems()">
<a py:if="nodeProps['SubNode'] == False" href="${tg.url('/node/' + nodeId)}">${nodeProps['Name']}</a>
<py:if test="nodeProps['SubNode'] == True">
<ul>
<a href="${tg.url('/node/' + nodeId)}">${nodeProps['Name']}</a>
</ul>
</py:if>
</li>
</ul>
</div>
</body>
데이터 노드에 parent-> child 링크가 있거나 child-> parent 만 있습니까? 전자의 경우 재귀 적 템플릿 함수를 정의하여 확장 할 수 있지만 부모의 자식을 모두 가져 오는 쉬운 방법이 없다면 더 어려울 것입니다. – Blckknght
원본 api에서 xml 구조체가 실제로 중첩되어 있으므로 부모 링크를 쉽게 추가 할 수 있습니다. 하지만 그 후에 어떻게 진행되는지 확신 할 수 없습니다. 당신은 정교 할 수 있습니까? – Sartsj
'py : def'를 사용하여 노드에 대한 링크를 출력하는 "매크로"를 정의한 다음 노드에 자식이있는 경우 중첩 목록을 만들고 각 자식 노드를 렌더링하기 위해 반복적으로 자체를 호출합니다. 내 시스템에는'genshi '가 없으므로 실제로 제대로 작동 할 것이라는 답변을 만들 수는 없지만 올바른 길로 인도하기에 충분합니다. – Blckknght