在看这篇文章之前,我建议先看bottle官方文档,可者在SVN下载中文文档
官方文档:http://www.bottlepy.org/docs/dev/index.html
SVN请跳转至:教程总目录
这些代码已提交到SVN中,有需要的朋友可在SVN下载
静态路由
注:以下很多文字说明,我直接是用文档上的
bottle开发从hello写起,用vim创建新的py文件:
vim main.py
- #/usr/bin/env python
- #coding=utf-8
- from bottle import route, run
- @route('/hello') #定义路由,即浏览器访问的地址
- def hello(): #函数名根据功能随意定义吧,只要不使用系统关键字便可,一般推荐按功能命名吧
- return "Hello www.linuxyw.com" #浏览器返回的内容
- run(host='0.0.0.0', port=8080) #开启服务,端口是8080,授受任何IP地址访问
现在这个教程,是直接这台博客服务器下跑的,所以,我只要输入我网站的域名(一般来说,都是在自己电脑上,或虚拟机中跑的程序,那么就应该输入该IP,如:http://192.168.1.22:8080/hello),就可以访问上面的程序
在浏览器输入地址:http://linuxyw.com:8080/hello
就这么简单!保存为 py 文件并执行:
python main.py
- [root@linuxyw bottle]# python main.py
- Bottle v0.12.8 server starting up (using WSGIRefServer())...
- Listening on http://0.0.0.0:8080/
- Hit Ctrl-C to quit.
用浏览器访问 http://linuxyw.com:8080/hello 就可以看到”Hello www.linuxyw.com”。它的执行流程大致如下:
route() 函数将一段代码绑定到一个 URL,在这个例子中, 我们将 hello() 函数绑定给了 /hello 。我们称之为 route (也是该修饰器的函数名) ,这是 Bottle 框架最重要的开发理念。你可以根据需要定义任意多的 route 。在浏览器请求一个 URL 的时候,框架自动调用与之相应的函数,接着将函数的返回值发送给浏览器。就这么简单!最后一行调用的 run() 函数启动了内置的开发服务器。它监听它的 8080 端口并响应请求,Control-c 可将其关闭。到目前为止,这个内置的开发服务器已经足够用于日常的开发测试了。它根本不需要安装,就可以让你的应用跑起来。在教程的后面,你将学会如何让你的应用跑在其他服务器上面
(译者注:内置服务器不能满足生产环境的要求)
调试模式 在早期开发的时候非常有用,但请务必记得,在生产环境中将其关闭。
毫无疑问,这是一个十分简单例子,但它展示了用 Bottle 做应用开发的基本理念。接下来你将了解到其他开发方式。
动态路由
动态路由简单的就是说,url地址是可以传递不同的内容到网页内容上去,这样就不需要写很多的静态路由了,用以下的代码示例吧
- @route('/hello/<name>')
- def helloName(name):
- return "hello:%s" % name
用浏览器访问:http://linuxyw.com:8080/hello/drfdai,显示:
在url中,输入不同的值,就会出现不同的内容,
如果我输入http://linuxyw.com:8080/hello/jianjian,那网页就会显示:hello:jianjian
如果我输入http://linuxyw.com:8080/hello/python,那网页就会显示:hello:python
包含通配符的 route,我们称之为动态 route(与之对应的是静态 route),它能匹配多个 URL 地址。一个通配符包含在一对尖括号里面 (像这样 <name> ),通配符之间用”/” 分隔开来。如果我们将 URL 定义为/hello/<name> 这样,那么它就能匹配 /hello/alice 和 /hello/bob 这样的浏览器请求,但不能匹配/hello , /hello/ 和 /hello/mr/smith 。URL 中的通配符都会当作参数传给回调函数,直接在回调函数中使用。这样可以漂亮地实现 RESTful形式的 URL。
来自外部的引用: 2