レシピ datagrid
ようするにテーブルにデータを出します。
テンプレートHTMLはこんな感じ。
<?xml version="1.0" encoding="utf-8"?> <html xmlns="http://www.w3.org/1999/xhtml"> <head> </head> <body> <h1>Address Book</h1> <div id="main"> <table> <thead> <tr> <th>Name</th> <th>MailAddress</th> </tr> </thead> <tbody> <tr class="person"> <td class="person-name">person name is here</td> <td class="person-mailaddress">person mail address is here</td> </tr> </tbody> </table> </div> </body> </html>
データをプッシュするPythonコード
import os from flexable import Template t = Template() t.fromfile(os.path.join(os.path.dirname(__file__), "datagrid.html")) value = dict(person=[{"person-name":"name%d" % i, "person-mailaddress":"name%d@example.com" % i} for i in xrange(10)]) t.merge(value) print str(t)
valueの中身はこうなる
{'person': [{'person-name': 'name0', 'person-mailaddress': 'name0@example.com'}, {'person-name': 'name1', 'person-mailaddress': 'name1@example.com'}, {'person-name': 'name2', 'person-mailaddress': 'name2@example.com'}, {'person-name': 'name3', 'person-mailaddress': 'name3@example.com'}, {'person-name': 'name4', 'person-mailaddress': 'name4@example.com'}, {'person-name': 'name5', 'person-mailaddress': 'name5@example.com'}, {'person-name': 'name6', 'person-mailaddress': 'name6@example.com'}, {'person-name': 'name7', 'person-mailaddress': 'name7@example.com'}, {'person-name': 'name8', 'person-mailaddress': 'name8@example.com'}, {'person-name': 'name9', 'person-mailaddress': 'name9@example.com'}]}
できあがったもの
<html xmlns="http://www.w3.org/1999/xhtml"> <head> </head> <body> <h1>Address Book</h1> <div id="main"> <table> <thead> <tr> <th>Name</th> <th>MailAddress</th> </tr> </thead> <tbody> <ns0:tr xmlns:ns0="http://www.w3.org/1999/xhtml" class="person"> <ns0:td xmlns:ns1="http://www.w3.org/1999/xhtml" class="person-name">name0</ns0:td> <ns0:td xmlns:ns2="http://www.w3.org/1999/xhtml" class="person-mailaddress">name0@example.com</ns0:td> </ns0:tr> <ns3:tr xmlns:ns3="http://www.w3.org/1999/xhtml" class="person"> <ns3:td xmlns:ns4="http://www.w3.org/1999/xhtml" class="person-name">name1</ns3:td> <ns3:td xmlns:ns5="http://www.w3.org/1999/xhtml" class="person-mailaddress">name1@example.com</ns3:td> </ns3:tr> <ns6:tr xmlns:ns6="http://www.w3.org/1999/xhtml" class="person"> <ns6:td xmlns:ns7="http://www.w3.org/1999/xhtml" class="person-name">name2</ns6:td> <ns6:td xmlns:ns8="http://www.w3.org/1999/xhtml" class="person-mailaddress">name2@example.com</ns6:td> </ns6:tr> <ns9:tr xmlns:ns9="http://www.w3.org/1999/xhtml" class="person"> <ns9:td xmlns:ns10="http://www.w3.org/1999/xhtml" class="person-name">name3</ns9:td> <ns9:td xmlns:ns11="http://www.w3.org/1999/xhtml" class="person-mailaddress">name3@example.com</ns9:td> </ns9:tr> <ns12:tr xmlns:ns12="http://www.w3.org/1999/xhtml" class="person"> <ns12:td xmlns:ns13="http://www.w3.org/1999/xhtml" class="person-name">name4</ns12:td> <ns12:td xmlns:ns14="http://www.w3.org/1999/xhtml" class="person-mailaddress">name4@example.com</ns12:td> </ns12:tr> <ns15:tr xmlns:ns15="http://www.w3.org/1999/xhtml" class="person"> <ns15:td xmlns:ns16="http://www.w3.org/1999/xhtml" class="person-name">name5</ns15:td> <ns15:td xmlns:ns17="http://www.w3.org/1999/xhtml" class="person-mailaddress">name5@example.com</ns15:td> </ns15:tr> <ns18:tr xmlns:ns18="http://www.w3.org/1999/xhtml" class="person"> <ns18:td xmlns:ns19="http://www.w3.org/1999/xhtml" class="person-name">name6</ns18:td> <ns18:td xmlns:ns20="http://www.w3.org/1999/xhtml" class="person-mailaddress">name6@example.com</ns18:td> </ns18:tr> <ns21:tr xmlns:ns21="http://www.w3.org/1999/xhtml" class="person"> <ns21:td xmlns:ns22="http://www.w3.org/1999/xhtml" class="person-name">name7</ns21:td> <ns21:td xmlns:ns23="http://www.w3.org/1999/xhtml" class="person-mailaddress">name7@example.com</ns21:td> </ns21:tr> <ns24:tr xmlns:ns24="http://www.w3.org/1999/xhtml" class="person"> <ns24:td xmlns:ns25="http://www.w3.org/1999/xhtml" class="person-name">name8</ns24:td> <ns24:td xmlns:ns26="http://www.w3.org/1999/xhtml" class="person-mailaddress">name8@example.com</ns24:td> </ns24:tr> <ns27:tr xmlns:ns27="http://www.w3.org/1999/xhtml" class="person"> <ns27:td xmlns:ns28="http://www.w3.org/1999/xhtml" class="person-name">name9</ns27:td> <ns27:td xmlns:ns29="http://www.w3.org/1999/xhtml" class="person-mailaddress">name9@example.com</ns27:td> </ns27:tr> </tbody> </table> </div> </body> </html>
うーん行ごとにプリフィックスがついてしまうな。
エレメントをコピーする方法がまずいのかなぁ。