1

カメレオンを使ってテンプレートを作ってみました。これがコードスニペットです。

モジュールの呼び出しruntemp.py

delete_list=[]
delete={'Name':'aaa','Sirname':'bbb','Friends':['ccc','ddd','eee']}
delete_list.append(delete)
templates = PageTemplateLoader(os.path.join(path, "templates"))
template = templates["delete_user.pt"]
print template(tdelete_list=delete_list)

テンプレートファイルdelete_list.pt

 <?xml version="1.0" encoding="UTF-8"?>
 <Delete>
   <DeleteRequest>

       <DeleteItems tal:repeat="deletions tdelete_list">

           <Deleteuser tal:repeat="delete repeat.deletions" >

                <Name tal:content="repeat.delete.Name"></Name>
                <Sirname tal:content="repeat.delete.Sirname"></Sirname>
                 <Friends>
                      <Friend tal:repeat="friend repeat.delete.Friends">
                               <Value tal:content="friend"></Value>
                       </Friend>
                 </Friends>

           </Deleteuser>

     <DeleteItems>

    </DeleteRequest>

 </Delete>

私が得た出力:

 <Delete>
        <DeleteRequest>

           <DeleteItems>



           </DeleteItems>
  </DeleteRequest>
 </Delete>

私の問題は、真ん中のタグが印刷されないことです。なにが問題ですか?

4

2 に答える 2

1

tdelete_list1 つの要素 (2 行目で作成する dict) を持つリストを反復処理しています。<DeleteItems />それがその1つのタグを取得する方法です。そのタグ内で を反復しようとしrepeat.deletionsますが、テンプレートに渡すコンテキストには という名前のオブジェクトはありませんrepeat.deletions

あなたの変数の命名から、あなたは何をしているのかを誤解していると思いますtal:repeat="deletions tdelete_list"-それは反復され、その反復可能な各要素に順番にtdelete_list名前を割り当てます。deletionsタグ内では、<DeleteItems />その名前でその要素にアクセスできます。

于 2012-10-19T12:29:36.027 に答える