5. webpy - templetor

最後更新: 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 的, 比如 "<" 會換成 &lt;

不想影響它的話, 那要用

$: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={})       # 什麼都用唔到

 

 


 

 

 

 

Creative Commons license icon Creative Commons license icon