显示标签为“webpy”的博文。显示所有博文
显示标签为“webpy”的博文。显示所有博文

2008年6月17日星期二

Web.py模板系统的tips [2008-6-12]

在webpy的模板系统里,仅能使用由程序传过来的变量和类,以及一些基本的itorator语句,不直接支持在模板里使用python的语句。如下面webpy的模板里的range和len会被系统报错,称“range”和“len”没有被定义。对于这种情况,有人说不好,不方便;也有人说就是应该这样,表现逻辑应该和呈现逻辑就是要区分开来,不应该允许在模板中直接调用python代码。
<h1>$title</h1>
$ for x in range(len(itemlist)):
<li> $x </li>

但是,如果以上例子能使用range和len将会带来很大的便利而并不会mix up所谓的表现逻辑和呈现逻辑。该怎么办?在webpy的论坛了,我找到了答案;)
只要在“表现逻辑”里增加以下语句,你的“呈现逻辑”模板就再也不会报错啦!
web.template.Template.globals['len'] = len
web.template.Template.globals['range'] = range


后来又找到一个更强的用法:

web.template.Template.globals['py'] = web.storify(__builtins__)

这样,你就可以使用py.xxx的方式,使用python所有的语句和函数啦!

2008年6月2日星期一

简单易用的python WEB框架:web.py

正在做一个管理GPRS网元配置的小工具,打算用web来做界面。也许是用python太容易实现web应用了,用python的web框架有好多,因为只是做为界面使用,因此找一个轻量级的就可以。目前轻量级的有Karrigell和web.py。Karrigell试用了一下,还算挺方便的,但由于它可以使用多答四种类型的脚本语言,有时反而让人无所适从。后来决定用web.py。

web.py用起来真是非常地简单:
1. 首先按web.py的helloworld程序的基础架构写几行引用web的语句
2. 列出需要用到的url与对应的处理函数名
3. 根据以上列出的列表,编写实现相应功能的的class
4. 运行你的程序!

以下是我尝试的第一个例子:
import web

urls = ('/', 'index')

class index:
def GET(self):
print "Hello, world!"

if __name__ == "__main__":
web.run(urls, globals())

运行后,在命令窗口会出现以下信息:
http://0.0.0.0:8080/

这时候,你打开浏览器,输入以上地址,就可以看到你的第一个web页面了!

web.py的官方网站上还提供了中文版的Tutorial,想了解更多的信息可以参考一下。