pythonにはテンプレートエンジンが沢山あって、
何を使うのか迷うのですが、
今回は、makoを試して見ました。
makoは、
で準備可能です。
さて。
ひとまず試す
hellomako.py
出力結果
"hello ${data}!" の ${data}部分が、
render(data="world"))の情報で置き換わってます。
これが最も単純な利用例でしょう。
ただ、まあ、このようにはあまり使いませんね・・・
ということで、ファイル参照をする方法に。。
先ほどの、”hello ${data}!”だけ抜き出して、hellomako.txtで保存します
hellomako.txt
出力結果
出力結果
出力結果
出力結果
まず、テンプレートから。
出力結果
dict形式でデータがあるときに、keyの情報を取得したい場合も出てくると思います。
その時の対応方法です。
hellomako6.py
makotest5.txt
何を使うのか迷うのですが、
今回は、makoを試して見ました。
makoは、
さて。
ひとまず試す
hellomako.py
from mako.template import Template print(Template("hello ${data}!").render(data="world"))
まずはこれから。
出力結果
hello world!
"hello ${data}!" の ${data}部分が、
render(data="world"))の情報で置き換わってます。
これが最も単純な利用例でしょう。
ただ、まあ、このようにはあまり使いませんね・・・
ということで、ファイル参照をする方法に。。
先ほどの、”hello ${data}!”だけ抜き出して、hellomako.txtで保存します
hellomako.txt
hello ${data}!
で、
from mako.template import Template mytemplate = Template(filename = "hellomako.txt") print mytemplate.render(data="World")
と、ファイルを指定してあげれば外部ファイルからテンプレートを読み込ませる事が可能です。
hello World!
さて、文字の置き換えは出来る様になりましたが、
これだけだとイマイチな部分もあります。
次に、リストの情報を、書きだしてみます。
テンプレートファイルを、
hellomako2.txt
%for elem in data: hello ${elem}! %endfor
こんな形にします。
これを、
hellomako2.py
from mako.template import Template value = ["Tokyo","Osaka","Nagoya","Japan"] mytemplate = Template(filename = "hellomako2.txt") print mytemplate.render(data="World")で読み出してみます。
出力結果
hello Tokyo! hello Osaka! hello Nagoya! hello Japan!
とループして出力されましたね♪
ちなみに、loop.indexという予約後を使うと、ループ回数が得られるので、
%for elem in data: ${loop.index+1}: hello ${elem}! %endfor
とすると、
1: hello Tokyo! 2: hello Osaka! 3: hello Nagoya! 4: hello Japan!
ってな感じになります。
往々にしてデータはハッシュ(dict)の事もありますよね。
この場合は、
hellomako3.py
valuehash = {"english":"apple", "japanese":u"りんご"} mytemplate2 = Template(filename = "makotest3.txt", input_encoding='utf-8') print(mytemplate2.render(data=valuehash))
テンプレート側は、
makotest3.txt
英語: ${data["english"]} 日本語 : ${data["japanese"]}
てな感じになります。
英語: apple 日本語 : りんご
になります。
当然、ハッシュはリストの要素としても使えますので、
hellomako4.py
mytemplate2 = Template(filename = "makotest4.txt", input_encoding='utf-8') valuehash = [{"english":"apple", "japanese":u"りんご"},{"english":"orange", "japanese":u"みかん"},{"english":"banana", "japanese":u"ばなな"}] print(mytemplate2.render(data=valuehash))
で、テンプレート側はforを使って、
makotest4.txt
%for elem in data: 英語: ${elem["english"]} 日本語 : ${elem["japanese"]} %endfor
英語: apple 日本語 : りんご 英語: orange 日本語 : みかん 英語: banana 日本語 : ばなな
ってなります。
また、ハッシュ(dict)の別の使い方として、key,valueとして渡す方法もあります。
沢山の引数を渡したいときも当然あると思います。
mytemplate2.render(data=valuehash,hoge=aaaaaa,hige=bbbbb)なんて、書けば良いのですが、これは面倒です。
そういう時は、ハッシュ(dict形式)で渡すと便利です。
makotest5.txt
英語: ${english} 日本語 : ${japanese}
hellomako4.py
from mako.template import Template mytemplate2 = Template(filename = "makotest5.txt", input_encoding='utf-8') valuehash = {"english":"apple", "japanese":u"りんご"} print(mytemplate2.render(**valuehash))
てな具合でソースを書きます。
mytemplate2.render(**valuehash)
と、**valuehashと、**変数名で、key=value渡しになります。
英語: apple 日本語 : りんご
となります。
その時の対応方法です。
hellomako6.py
from mako.template import Template mytemplate = Template(filename = "makotest5.txt", input_encoding='utf-8') valuehash = {"1111":{"english":"apple", "japanese":u"りんご"},"2222":{"english":"orange", "japanese":u"みかん"},"3333":{"english":"banana", "japanese":u"ばなな"}} print(mytemplate.render(data=valuehash))
makotest5.txt
%for key,elem in data.items(): id=${key} 日本語:${elem["japanese"]} 英語:${elem["english"]} %endfor出力結果
id=1111 日本語:りんご 英語:apple id=3333 日本語:ばなな 英語:banana id=2222 日本語:みかん 英語:orange
まだまだ奥深いのですが、ひとまず使ってみられたかなーと思います
0 件のコメント:
コメントを投稿