python网页框架代码_Python web 框架:web.py 【函数】

函数-$def

函数定义也是与在python中类似,用def,只是也要在前面加$,代码也要注意$的使用和缩进:

1 $def hello(name=""):2 Hello $name!

函数调用也是用$加函数名的形式:

1 $hello("Lisa")

当然,定义函数时也可以与html代码混编:

1 $def hello(name=""):2 Hello $name!

但是调用的时候需要在函数名前用$:前缀,否则html代码将以plain text形式打印到页面上。

1 $:hello("Lisa")

输出程序代码-$code块

如果想在模板里输入写一段python代码而又不想被$所烦恼,那么可以用到$code块。

页面上输出一段代码而不希望被系统理解为模板程序代码,就需要用到$code命令,比如在模板文件中写入下面一段:

1 $code:2 x=103 def print_num(num):4 return "num is %d" % num

然后再加上下面代码:

1 $print_num(x)2

3 $x

这里就用在$code块中定义的print_num函数以x变量为参数在页面上输出一行:num is 10

然后下一行直接引用x变量,直接在页面上输出数字10。

$var

$var命令可以在模板中定义变量,在其他地方引用此模板对象的时候可以访问此定义的变量。

比如我们可以在index.html中添加如下一行:$var vara: this is vara

表示定义了一个名为vara的变量,变量值是字符串this is vara。

把index的GET函数改为:

1 def GET(self):2 render=web.template.render("templates")3 return render.index("Lisa", "Hayes").vara

那么结果显示在页面上的就是this is vara这句话。要注意一点的是,这种变量是字符串,即便如下定义变量:$var vara: 0

Vara也并不是数字0,如果把GET函数最后改成:return render.index(“Lisa”, “Hayes”).vara+1

会导致程序出错。如果希望得到期望中的结果1,则需要如下形式代码:return int(render.index(“Lisa”, “Hayes”).vara)+1

builtins and globals

在模板中,用户可以直接使用python的内建函数和变量,写函数变量包括range, min, max 以及 True 和 False等。 除此之外,如果希望在模板中使用其他的非内建功能,就需要一点特殊操作。要在创建render的时候显式指定所需要的功能函数。

1 import web2 import markdown3

4 globals = {'markdown': markdown.markdown}5 render =web.template.render('templates', globals=globals)

这样,在模板中就可以用$markdown来引用markdown.markdown了。同样,也可以用这种办法来禁用builtins

1 # disable all builtins2 render = web.template.render('templates', builtins={})

模板复用

当多个页面有着相同的结构框架的时候,为每一个页面单独维护一个模板就显得比较麻烦,web.py提供了一种简易的解决方法。

这时候就要用到创建render时使用base参数:

1 render=web.template.render("templates",base="layout")2 return render.index("Lisa", "Hayes")

这个layout表示要以templates下的layout.html模板为通用模板框架。因此我们还要在templates目录下新建一个layout.html文件,写下如下代码:

1 $def with (content)2

3

4

5

6

Layout

7

8

9 $:content10

11

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值