首页 > 代码库 > Bottle?中的基本映射和动态映射

Bottle?中的基本映射和动态映射

这篇Bottle 教程是比较基础的,主要讲解Bottle?的基本映射和动态映射。

 

基本映射

映射使用在根据不同 URLs 请求来产生相对应的返回内容。
Bottle 使用 route() 修饰器来实现映射。

from bottle import route, run@route(’/hello’)def hello():

    return "Hello World!"

run() # This starts the HTTP server

运行这个程序,访问 http://localhost:8080/hello 将会在浏览器里看到 "Hello World!"

GET, POST, HEAD, ...

这个映射装饰器有可选的关键字 method 默认是 method=’GET’
还有可能是 POSTPUTDELETEHEAD 或者监听其他的 HTTP 请求方法。

from bottle import route, request@route(’/form/submit’, method=’POST’)def form_submit():

    form_data = http://www.mamicode.com/request.POST>

    do_something(form_data)

return "Done"

 

动态映射

你可以提取 URL 的部分来建立动态变量名的映射。

@route(’/hello/:name’)def hello(name):

    return "Hello %s!" % name

默认情况下,一个 :placeholder 会一直匹配到下一个斜线。
需要修改的话,可以把正则字符加入到 #s 之间:

@route(’/get_object/:id#[0-9]+#’)def get(id):

    return "Object ID: %d" % int(id)

或者使用完整的正则匹配组来实现:

@route(’/get_object/(?P<id>[0-9]+)’)def get(id):

    return "Object ID: %d" % int(id)

正如你看到的,URL 参数仍然是字符串,即使你正则里面是数字。
你必须显式的进行类型强制转换。

@validate() 装饰器

Bottle 提供一个方便的装饰器 validate() 来校验多个参数。
它可以通过关键字和过滤器来对每一个 URL 参数进行处理然后返回请求。

from bottle import route, validate# /test/validate/1/2.3/4,5,6,7@route(’/test/validate/:i/:f/:csv’)@validate(i=int, f=float, csv=lambda x: map(int, x.split(’,’)))def validate_test(i, f, csv):

    return "Int: %d, Float:%f, List:%s" % (i, f, repr(csv))

你可能需要在校验参数失败时抛出 ValueError

 

 

文章来自:segmentfault

Bottle?中的基本映射和动态映射