これは、ビスミガリスの回答への入力に関するGraemeの質問に対する1つの回答です。
Comment
次のようなオブジェクトから始めます。
class Comment():
id = 0
body = ""
children = []
def __init__(self, id, body, children):
self.id = id
self.body = body
self.children = children
次に、コメントとその子のリストを作成します。遊んでみるために、これを手動で行いました(適切にスタイルされていない場合は申し訳ありません):
comments = []
comment1 = Comment(1, "First comment", None)
comment2 = Comment(2, "Second comment", [
Comment(3, "Third comment", [
Comment(5, "Fifth comment", None)
]
),
Comment(4, "Fourth comment", None),
]
)
comment6 = Comment(6, "Sixth comment", None)
comments.append(comment1)
comments.append(comment2)
comments.append(comment6)
次に、ビュー コード内から返された辞書の一部にするだけです。
return {'comments': comments}
bismagalis の回答のテンプレート コードは、次の HTML を生成します。
<ul>
<li class="comment" comment_id="1">
<div>ID: 1 First comment</div>
<div>
<ul>
</ul>
</div>
</li>
<li class="comment" comment_id="2">
<div>ID: 2 Second comment</div>
<div>
<ul>
<li class="comment" comment_id="3">
<div>ID: 3 Third comment</div>
<div>
<ul>
<li class="comment" comment_id="5">
<div>ID: 5 Fifth comment</div>
<div>
<ul>
</ul>
</div>
</li>
</ul>
</div>
</li>
<li class="comment" comment_id="4">
<div>ID: 4 Fourth comment</div>
<div>
<ul>
</ul>
</div>
</li>
</ul>
</div>
</li>
<li class="comment" comment_id="6">
<div>ID: 6 Sixth comment</div>
<div>
<ul>
</ul>
</div>
</li>
</ul>
かなりネタバレ<div>
や<ul>
タグが混じっているようなので見落としがあるかもしれませんが…