77范文网 - 专业文章范例文档资料分享平台

webpy(3)

来源:网络收集 时间:2019-04-21 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

loop.index: 循环次数计数 (1-开始) loop.index0: 循环次数计数(0-开始) loop.first: 如果是第一次循环则为True loop.last: 如果是最后一次循环则为True loop.odd: 如果是第奇数次循环则为True loop.even: 如果是第偶数次循环则为True

loop.parity: 如果循环次数为奇数值为“odd” ,反之为 “even” loop.parent: 本循环的外层循环对象 $for a in [\

$loop.index,$loop.index0,$loop.first,$loop.last,$loop.odd,$loop.even,$loop.parity
将在页面上打印出:

1,0,True,False,True,False,odd 2,1,False,False,False,True,even 3,2,False,False,True,False,odd 4,3,False,True,False,True,even

4.5.7函数-$def

函数定义也是与在python中类似,用def,只是也要在前面加$,代码也要注意$的使用和缩进: $def hello(name=”\ Hello $name!

函数调用也是用$加函数名的形式: $hello(“Lisa”)

当然,定义函数时也可以与html代码混编: $def hello(name=”\

Hello $name!

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

4.5.8输出程序代码-$code块

如果想在模板里输入写一段python代码而又不想被$所烦恼,那么可以用到$code块。 页面上输出一段代码而不希望被系统理解为模板程序代码,就需要用到$code命令,比如在模板文件中写入下面一段: $code: x=10

def print_num(num): return “num is %d” % num 然后再加上下面代码: $print_num(x)
$x

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

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

4.5.9$var

$var命令可以在模板中定义变量,在其他地方引用此模板对象的时候可以访问此定义的变量。 比如我们可以在index.html中添加如下一行: $var vara: this is vara

表示定义了一个名为vara的变量,变量值是字符串this is vara。 把index的GET函数改为:

def GET(self):

render=web.template.render(“templates”) 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

4.6builtins and globals

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

globals = {?markdown?: markdown.markdown}

render = web.template.render(?templates?, globals=globals)

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

render = web.template.render(?templates?, builtins={})

4.7模板复用

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

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

render=web.template.render(“templates”,base=”layout”) return render.index(“Lisa”, “Hayes”)

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

Layout $:content

可以看到,这个模板文件必须是有一个参数content。 然后修改index.html,只保留如下代码,其他删掉: $def with(gname, fname)

Hi, $(gname) $(fname)

运行程序,页面上打印Hi, Lisa Hayes,查看代码会发现最终代码就是index.html和layout.html合并在一起的结果,index.html中的内容被嵌入到layout.html中的$:content处。

在layout.html模板中还可以引用index.html中定义的var变量,这为程序带来了更多的灵活性,比如我们希望在不同的页面在使用同一个layout模板的时候能有不同的title,可以在使用layout的模板中定义如下一个var变量: $var title:This is index.html

然后在layout.html中的title处修改为: $content.title

这样,访问index.html时显示在浏览器上的title就是This is index.html,而不是原来的Layout了。

4.8在模板中使用python代码模块

在默认状态下,在模板中是不能直接调用其他python代码模块文件中的程序的,必须做一些额外的操作。

首先,我们新建一个模块,叫module1.py,在里面写一个函数: def hello_from_m1(name=”\

return “hello %s, this is module1″ % name 在main.py里导入module1: import module1

并且修改GET函数中创建render的代码为: def GET(self):

render=web.template.render(“templates”,base=”layout”,globals={“m1″:module1}) return render.index(“Lisa”)

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库webpy(3)在线全文阅读。

webpy(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/608157.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: