最後更新: 2021-09-27
目錄
最簡單的 template
code.py
render = web.template.render('templates') print render.hello('world')
# templates 目錄內的檔案 hello.tmpl 作為 template使用, hello 的副檔名是什麼也可以
hello.tmpl
$def with (name) Hello $name!
第一行: "$def ..." 定義了有什麼參數,
name 是由 code.py 轉入來, 之後用 $name 調用
code.py 的另一種寫法:
hello = web.template.frender('templates/hello.html') print hello('world')
$
"$" is used to specify python expressions.
Look, a $string. Hark, an ${arbitrary + expression}. Gawk, a $dictionary[key].function('argument'). Cool, a $(limit)ing. # Set var to 5 $ var = 5
應用
多行code 的 template :
If you put a backslash \ same line
注解:
$# this is a comment
$ 符號:
Can you lend me $$50?
template 內的 variables:
$ myv
# 有空格
Filter:
default 轉入 template 的 var 內容是會經過 filter 的, 比如 "<" 會換成 <
不想影響它的話, 那要用
$:name
一大堆 Code:
$code: ........... ...........
Flow control
If:
$if times > max:
Stop! In the name of love.
$else:
Keep on, you can do it.
For Loop:
$for i in range(10): I like $i
While Loop:
$while a:
hello $a.pop()
Function
$def tr(values): <tr> $for v in values: <td>$v</td> </tr> $# 因為有 HTML 夾在其中, 所以要用 $v $def table(rows): <table> $for row in rows: $:row </table> $ data = [['a', 'b', 'c'], [1, 2, 3], [2, 4, 6], [3, 6, 9] ] $:table([tr(d) for d in data]) $# 就算用多個 function, 那都是用一次 $
控制 template 可以用什麼 function
render = web.template.render('templates', globals=globals) # 什麼都用到 render = web.template.render('templates', builtins={}) # 什麼都用唔到