1

ツリー構造を表すためのテンプレートを作成しました。ツリーの各ノードには、ID、名前、子のリスト(tree_children)、および展開されたプロパティがあります。

ツリー構造にいくつかのノードを配置してから、ルートノードで次の関数を呼び出しました。

def print_tree_info(oCat, iOffset=0):
    """
    just for testing purposes. print to console
    """
    sOffset = '   '*iOffset
    if oCat.expanded:
        sButton = '-'
    else:
        if oCat.tree_children:
            sButton = '+'
        else:
            sButton = '.'
    print("{0}{1}{2}".format(sOffset,sButton,oCat.name))
    if oCat.expanded:
        for oChild in oCat.tree_children:
            print_tree_info(oChild,iOffset+1)  

印刷しました

-ROOT_NODE
   +major1
   .base2

これは素晴らしいです。

ここで、同じノード構造をmakoテンプレートのrender関数に(makoテンプレート自体とともに)渡すと、属性エラーが発生します。

テンプレートをレンダリングする方法は次のとおりです。

template = Template(..........)
html = template.render(category=root_node, item_template=template)

これがテンプレートです

%if category is UNDEFINED:
ERROR
%elif category:
<div class="tree_item"  category_id="${category.id}">
%if category.expanded:
    <a class="collapse_tree_item"  category_id="${category.id}">-</a>
%elif category.tree_children:
    <a class="expand_tree_item" category_id="${oCategory.id}">+</a>
%endif
<a class="select_tree_item">${category.name}</a>
%if category.expanded:
    %for oChild in category.tree_children:
          ${item_template.render(category=oChild,item_template=item_template)}
    %endfor
%endif
</div>
%endif
4

1 に答える 1

1
<a class="expand_tree_item" category_id="${oCategory.id}">+</a>

する必要があります

<a class="expand_tree_item" category_id="${category.id}">+</a>

学んだ教訓:命名規則に一貫性を持たせる。

于 2012-07-28T19:16:01.130 に答える