一个经典的web.py模块如下:
在开始你的web.py程序之前,打开一个文本文件(文件名为app.py)输入:
import web
这条语句会导入web.py模块。
现在我们需要把我们的URL结构告诉web.py。让我从下面这个简单的例子开始:
urls = (
'/', 'index'
)
第一部分是匹配URL的
正则表达式
,像
/
、
/help/faq
、
/item/(\d+)
等(
\d+
将匹配数字)。圆括号表示捕捉对应的数据以便后面使用。第二部分是接受请求的类名称,像
index
、
view
、
welcomes.hello
(
welcomes
模块的
hello
类),或者
get_\1
。
\1
会被正则表达式捕捉到的内容替换,剩下来捕捉的的内容将被传递到你的函数中去。
GET
是我们都熟悉的。它用于请求网页文本。当你在浏览器输入harvard.edu
,它会直接访问Harvard的web服务器,去GET /
。 第二个最有名的是POST
,它经常被用在提交form,比如请求买什么东西。每当提交一个去做什么事情(像使用信用卡处理一笔交易)的请求时,你可以使用POST
。这是关键,因为GET
的URL可以被搜索引擎索引,并通过搜索引擎访问。虽然大部分页面你希望被索引,但是少数类似订单处理的页面你是不希望被索引的 (想象一下Google尝试去购买你网站上的所有东西)。
在我们web.py的代码中,我们将这两个方法明确区分:
class index:
def GET(self):
return "Hello, world!"
当有人用GET
请求/
时,这个GET
函数随时会被web.py调用。
好了,限制我们只需要最后一句就写完了。这行会告诉web.py开始提供web页面:
if __name__ == "__main__": app.run()
这会告诉web.py为我们启动上面我们写的应用。
启动服务
如果你在命令行下面,请输入:: $ python app.py http://0.0.0.0:8080/
现在你的web.py应用正运行在你电脑上的一个真正的web服务器上。 访问那个URL,然后你应该看到"Hello, world!" (你可以通过把IP地址/端口加在"app.py"的后面,来控制web.py在哪里启动服务器。你也可以让它运行在fastcgi
或scgi
服务器上)。
注意: 如果你不能或者不想使用默认端口,你可以使用这样的命令来指定端口号:
$ python app.py 1234