码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2016-08-28 22:49:34      阅读:393      评论:0      收藏:0      [点我收藏+]

标签:

这篇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 = 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?中的基本映射和动态映射

标签:

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
jiangjie190
加入时间:2016-02-19
  关注此人  发短消息
文章分类
jiangjie190”关注的人------(0
jiangjie190”的粉丝们------(0
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!