赞
踩
Bottle 是一个非常小巧但高效的微型 Python Web 框架,它被设计为仅仅只有一个文件的Python模块,
并且除Python标准库外,它不依赖于任何第三方模块。
sudo easy_install -U bottle
- + application
- +----bottle.py
- +----app.py
- <span style="font-family:SimSun;font-size:18px;">#/usr/bin/python
-
- from bottle import route,run,template
-
- @route('/hello/<name>')
- def index(name):
- return template('<b>Hello{{name}}</b>!',name=name)
-
- run(host='localhost',port=8080)
- </span>
运行该脚本文件(或者将该代码片paste into Python cinsole):
- <span style="font-family:SimSun;font-size:18px;">$ python hello.py
- Bottle v0.13-dev server starting up (using WSGIRefServer())...
- Listening on http://localhost:8080/
- Hit Ctrl-C to quit.</span>
-
- <span style="font-family:SimSun;font-size:18px;"></span>
访问:“http://localhost:8080/hello/bottle”试试。上面到底发生了什么?
route()
Decorator , Templete() 和 run()
函数route()
可以将一个函数与一个URL进行绑定,在上面的示例中,route 将 “/hello’ 这个URL地址绑定到了 “index(name)” 这个函数上
2、上面的方法仅仅只是展示一下下 Bottle 的简单,我们还可以像下面这样,创建一个 Bottle 对象,对象命名为 App,
然后我们会将所有的函数都映射到 App 的 URL 地址上,如上示例我们可以用下面这种办法来实现:
- <span style="font-family:SimSun;font-size:18px;">#/usr/bin/python
-
- from bottle import Bottle,run,template
-
- App = Bottle()
- @App.route('/hello/<name>')
- def index(name):
- return template('<b>Hello Object {{name}}</b>!',name=name)
-
- run(App,host='localhost',port=8080)</span>
route()
函数添加不限数目的路由器- <span style="font-family:SimSun;font-size:18px;">from bottle import route
-
- @route('/')
-
- @route('/index.html')
- def index():
- return '<a herf="/hello">Go to Hello World Page</a>'
-
- @route('/hello')
- def hello():
- return 'hello world'
-
- run(host='localhost',port=8080)</span>
就像你看到,你所发出的访问请求(URL),应用并没有返回服务器上真实的文件,而是返回与该URL绑定的函数的返回值,
如果其一个URL没有被绑定到任何回调函数上,那么 Bottle 将返回“404 Page Not Found” 的错误页面!!!
Bottle 有自己特有的 URL 语法,这让我们可以很轻松的在 URL 地址中加入通配符,这样,一个 route 将可以映射到无数的 URL 上,这些动态的路由常常被用来创建一些有规律性的内容页面的地址,比如博客文章地址“/archive/1234.html” 或者 “/wiki/Page_Title”:
eg:
@route(’/hello/:name’)
def hello(name = ‘World’): return ‘Hello {}!’.format(name)
上面的路由器,可以让我们通过“/hello/costony”或者“/hello/wangye”等地址来访问,而 Bottle 返回的内容将是“Hello costony!” 或者 “Hello wangye!”,“/hello/”之后的字符串被返回来,默认的通配符将匹配所有下一个“/”出现之前的字符。我们还可以对通配符进行格式化:
- <span style="font-family:SimSun;font-size:18px;">@route('/wiki/<pagename>')
- def show_wiki_page(pagename):
- return "<b>This is the :{}".format(pagename)</span>
HTTP 协议为不同的需求定义了许多不同的请求方法,在 Bottle 中,GET方法将是所有未指明请求访问的路由会默认使用的方法,这些未指明方法的路由都将只接收 GET 请求,要处理如 POST, PUT 或者 DELETE 等等的其它请求,你必须主动地在route()
函数中添加 method
关键字,或者使用下面这些 decorators:get() , post()
, put()
, patch(),delete()
。
POST 方法在经常被用来处理 HTML 的表单数据,下面的示例演示了一个 登陆表单的处理过程:
Reference:
http://bottlepy.org/docs/dev/tutorial.html#request-routing
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。