当前位置: 首页 > 面试题库 >

如何使用Django模板渲染树结构(递归)?

彭宏深
2023-03-14
问题内容

我的内存中有一个树结构,我想使用Django模板以HTML呈现。

class Node():
  name = "node name"
  children = []

将有一些对象rootNode,并且children是的列表Noderoot将在模板的内容中传递。

我发现这个的如何可能实现一个讨论,但海报表明,这在生产环境中可能不是很好。

有人知道更好的方法吗?


问题答案:

使用with模板标记,我可以做树/递归列表。

样例代码:

主模板:假设“ all_root_elems”是树的一个或多个根的列表

<ul>
{%for node in all_root_elems %} 
    {%include "tree_view_template.html" %}
{%endfor%}
</ul>

tree_view_template.html呈现nested ul,li并使用node模板变量,如下所示:

<li> {{node.name}}
    {%if node.has_childs %}
        <ul>
         {%for ch in node.all_childs %}
              {%with node=ch template_name="tree_view_template.html" %}
                   {%include template_name%}
              {%endwith%}
         {%endfor%}
         </ul>
    {%endif%}
</li>


 类似资料:
  • 我有Django 1.10版本的这个模型 在这个ORM查询之后 我能够得到系数并展示他们的游戏。现在在模板中显示重复的“游戏代码”。我发现很难显示游戏及其系数。

  • 6.1 渲染模板 一旦你拥有一个模版文件,你可以通过给一个map来给它传递数据。 map是一个变量及赋予的值的集合,模板使用它来得到变量的值,或者对于块标签求值。 它的渲染函数有一个可选的变量键值对map 通过 ctx.Render() 方法来渲染模板,例如: func (r *Render) Serve(ctx *faygo.Context) error { return ctx.Ren

  • Tango默认核心不包含模板渲染功能,在官方中间件中包含两个渲染引擎中间件,一个是 Go标准模板引擎, 另一个是 Pongo2模板引擎

  • 在控制器里模板渲染最常用的方法是display,在CMF中支持如下的模板渲染方式: //不带任何参数 $this->display(); 此种方式系统会自动判断模板路径,并渲染出模板内容,此种方式模板路径是:主题名/应用名/控制器名/操作名+模板文件后缀名; $this->display('edit'); 此种方式表示调用此控制器下的edit操作的模板; $this->display(':in

  • Tpongo2 中间件是 pongo2.v3 模板引擎的 Tango 支持。 安装 go get github.com/tango-contrib/tpongo2 示例 package main import ( "github.com/lunny/tango" "gopkg.in/flosch/pongo2.v3" "github.com/tango-contrib/tp

  •  说明 调用方法: $.f2e.util.render(temp,data,fn,helper); 函数说明: 调用template渲染模板,依赖于artTemplate库 参数说明: 参数名 类型 说明 备注 temp string html字符串 无 data object 参数名 无 fn function 回调函数 无 helper function artTemplate自定义方法 无