1:通过全局变量 :全局变量是不须要用$def with语法实现传递的,仅仅要定义了2:使用模板的几种方法:
在html中就能够用,样例例如以下:
===================================================================
#模板公共变量,以下能够定义全部的html文件都要用到的变量 ,不须要复杂的
$def with (va,vb)
t_globals = {
'datestr': web.datestr,
'cookie': web.cookies,
"loginform": login,
"gposts":model.get_posts,
}
#指定模板文件夹,并设定公共模板,base="base"设定共用的base.html模板,
在./templates/base.html这个路径 找到这个文件
render = web.template.render('templates', base='base', globals=t_globals)
=========================================================
2:通过在python程序中在render时传入 ,样例例如以下:
=========================================================
在python文件里,
render=web.template.render("./")
class index:
def GET(self):
abc="world"
render.index(name=abc)
在index.html文件里:
$def with (name)
hello $name
===========================================================
能够看到上面的样例是在python文件里对index()函数传入了name,
而在index.html文件里,要定义一个暂时变量,接受这个传入的变量
abc是python中的变量的名字
name是html文件里变量的名字,
在render.index(name=abc)实现了变量的传递 ,
注意:在 python中render.index(a,b)能够传递多个变量
那么在 html文件里就要声明相应的暂时变量 $def with (va,vb)
===========================================================
1:直接使用html文件,并向index.html文件传入python变量 ,样例例如以下,3:以下是python 在html文件里的基本的语法
在python中:
render=web.template.render("templates") class index: def GET(self): return reder.index("wolrd")#templates是文件夹,到时把全部html文件放在templates文件夹下,如要用到的index.html
2:直接指定详细的文件,这种方法扩展行不好,
hello=web.template.frender("templates/hello.html") return hello("world")3:使用字符串
html="$def with (name)\n hello $name" hello=web.tempate.Template(html) return hello("wolrd")================================================================
能够看到调用了template的三种方法:
render=web.template.render("templates")仅仅指定html文件的路径 render.index("world") hello=web.tempalte.frender("templates/hello.html")指定了详细的html文件 hello("world") hello=web.template.Template(string)直接把字符串传入进去, hello("world")================================================================
上面三种方法最经常使用的是第一中,render.index的方式,
================================================================
$varible $(varible) ${varible}
2:在html文件里创建新的变量 ,肯定是在赋值时才会创建新的变量 啊
语法例如以下,$ 加上空格 加上变量名,空格非常重要$ bug=True $ va=1 <div> $var </div>
3: 在取变量的值的时候 ,你会看到两种语法:
第一种: $a
4: \ 这个符号的有点意思,会使多行的内容,仅仅显示一行
hello \
5:问你个问题,怎样在html文件里显示$这个符号(由于给webpy当特殊的用了)
答案非常easy,输入两个$$即可了
6:在html中怎样写python风格的凝视呢,我说的不是<!这种凝视哦>
$#这是凝视,你在浏览器中是看不到的,webpy把这部分给filter了
7:到了控制流部分了, 注意的面的i want这一句的缩进,要大于两个空格,
你用tab按键一般不会有问题$for i in range(10): i want eat $i apple(s) $ a=4 $while a<10: $a $ a+=1 $if a>10: hell $a $else: keep on ,you will do it 一个for 在 html应用中的样例,这样创建一个表 <table> $for c in ["a", "b", "c", "d"]: <tr class="abc"> <td>$index</td> <td>$c</td> </tr> </table>
8:其他一些实用的东西 如,$def
还能够在html中定义函数,这是多么方便的东西$def tr(value): <tr> $for i in value: <td> $i </td> </tr> $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])
9:另一个奇妙的 keyword code,全部的python代码都能够写在code 块以下:
$code: x = "you can write any python code here" y = x.title() z = len(x + y) def limit(s, width=10): """limits a string to the given width""" if len(s) >= width: return s[:width] + "..." else: return s回来到html
$def with (title, body) $var title: $title $var content_type: text/html <div id="body"> $body </div>在python中
>>> out = render.page('hello', 'hello world') >>> out.title u'hello' >>> out.content_type u'text/html' >>> str(out) '\n\n<div>\nhello world\n</div>\n'能够看到varkeyword的作用是把在 html中定义的变量,传回到python程序中,
11:在html文件里能够訪问的builtin 函数 和变量 ,经常使用的函数都是
能訪问的,如max,min,range,import web import markdown globals={"markdown":markdown.markdown} render=web.template.render("tempaltes",globals=globals)这样在全部的html文件里都能够使用 makrdown这个函数了
12:出于安全考虑,以下的命令不能在html模板中出现
import ,exec