利用Django模版生成树状结构实例代码

  

  

我们经常会有这样的需求,比如评论功能,每个评论都有可能会有自己的子评论,如果在界面只展示成一列的话非常不美观,也不能体现出他们的层级关系。那么我们今天就来看看如何使用Django的模版来生成树状结构,以本站为例,效果如下图所示:

  

利用Django模版生成树状结构实例代码

  

那么我们要怎么实现呢?首先先看看评论实体的定义,如下所示:

        类注释(models.Model):   身体=模型。文本框(“正文”,max_length=300)   作者=models.ForeignKey(设置。AUTH_USER_MODEL, verbose_name='作者”,空白=True, null=True,>   @register.simple_tag   * * kwargs def查询(qs):   ”““模板标签允许queryset过滤。用法:   {%查询书籍作者=作者mybooks %}   {%的书mybooks %}   …   {% endfor %}   ”“”   以前返回qs.filter (* * kwargs)      

接下来下面这段代码是树节点的模版代码。

        {%负载blog_tags %}   {%负载comments_tags %}   & lt; div id=癱ommentlist-container”class=癱omment-tab”比;   & lt; ol类=癱ommentlist”比;   {%查询article_comments parent_comment=没有parent_comments %}   {%在parent_comments comment_item %}   {% 0为深度%}   {%/标签/comment_item_tree包括“评论。html“%}   {% endwith %}   {% endfor %}   & lt;/ol>   & lt;/div>      

其中的<代码>{%查询article_comments parent_comment=没有parent_comments %}>         {%负载blog_tags %}   & lt;李class="评论甚至线,深度——{{深度}}父母”id=" - {{comment_item置评。pk}}”   比;   & lt; div id=" div-comment - {{comment_item。pk}}”class=" comment-body”比;   & lt; div class=" comment-meta commentmetadata”比;   {{comment_item。created_time}}   & lt;/div>   & lt; p> {{comment_item。身体| |逃离custom_markdown}} & lt;/p>   & lt; div类="回复"祝辞& lt;一个类=癱omment-reply-link”   href=" javascript:无效(0)”rel=巴獠縩ofollow”      aria-label="回复给{{comment_item.author。用户名}}”在回复& lt;/a> & lt;/div>   & lt;/div>      & lt;/li> & lt; !- # # #评论比;   {%查询article_comments parent_comment=comment_item cc_comments %}   {% cc_comments cc的%}   {% comment_item=cc/标签/comment_item_tree template_name="评论。html“%}   {%=|添加深度:深度1%}   {%包括template_name %}   {% endwith %}   {% endwith %}   {% endfor %}      

其中最主要的部分就是& lt;/li>标签后面那段。这里使用,和包括配合来在每一次循环里面重复的引入comment_item_tree.html,并且每次引入时赋予当前的评论变量和深度(每层循环深度会+ 1),然后在每个评论处使用<代码> 来实现缩进,这样就实现了树状显示。

  

  

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。

利用Django模版生成树状结构实例代码