标签:form表达 http bottle python web开发
HTTP 请求方法
HTTP 协议有很多种请求方法。route默认使用GET方法,只响应GET请求。method参数可以给route()函数指定使用哪种方法。或用get(),post(),put()或delete()等函数来代替route()函数。
POST 方法一般用于HTML 表单的提交。下面是一个使用POST 来实现用户登录的例子:
[root@jubottle]# cat login.py #!/usr/bin/envpython #coding=utf-8 from bottle import run,get,post,request @get(‘/login‘) #或者@route(‘/login‘),默认是GET方法 def login_form(): return ‘‘‘ <form method="POST"action="/login"> 用户名:<input name="username" type="text"/><br> 密码: <inputname="password" type="password" /><br> <input value="登录" type="submit"/> </form>‘‘‘ @post(‘/login‘) #或者@route(‘/login‘,method=‘POST‘),POST方法要指定 def login_submit(): name = request.forms.get(‘username‘) passwd = request.forms.get(‘password‘) return "<p>用户名:%s</p><p>密码:%s</p>" %(name,passwd) run(host=‘0.0.0.0‘,port=8000,debug=True) #开启服务,打开debug模式
打开浏览器访问:http://192.168.116.199:8000/login
在username处输入:ju
在password处输入:123
点登录后网页显示:
在上例中使用POST方法时,使用request.forms方法获取相关的值,当从GET方法传递键值时,用 request.query方法来获取,例如:
[root@jubottle]# cat get_test.py #!/usr/bin/envpython from bottle import run,get,request @get(‘/vars‘) def vars(): var1 = request.query.username var2 = request.query.password return "username=%s,password=%s"% (var1,var2) run(host=‘0.0.0.0‘,port=8000,debug=True)
打开浏览器访问:http://192.168.116.199:8000/vars?username=ju&password=123
特殊请求方法: HEAD 和 ANY
HEAD 方法类似于 GET 方法,但服务器不会返回 HTTP 响应正文,一般用于获取 HTTP 原数据而不用下载整个页面。
非标准的ANY方法做为一个低优先级的fallback:在没有其它route的时候,监听ANY方法的route会匹配所有请求,而不管请求的方法是什么。这对于用做代理的route很有用,可将所有请求都重定向给子应用。
总之:HEAD 请求被响应GET请求的route来处理,响应 ANY 请求的 route 处理所有请求,但仅限于没有其它 route 来匹配原先的请求的情况。
静态文件映射
Bottle 不会处理像图片或CSS 文件的静态文件请求。你需要给静态文件提供一个route,一个回调函数(用于查找和控制静态文件的访问)。
[root@jubottle]# cat static_test.py #!/usr/bin/envpython from bottle import static_file, route, run @route(‘/static/<filename:path>‘) def server_static(filename): return static_file(filename,root=‘/home/bottle/static‘) run(host=‘0.0.0.0‘,port=8000)
打开浏览器访问:http://192.168.116.199:8000/static/lufei.jpg
错误页面
如果页面出错,Bottle 会显示一个默认的错误页面,提供足够的debug 信息。你也可以使用error()函数来自定义你的错误页面:
from bottle import static_file,route,run,error @error(404) def error_page(error): return ‘没有你还要访问的页面!‘ run(host=‘0.0.0.0‘,port=8000)
打开浏览器访问一个不存在的页面:http://192.168.116.199:8000/test
本文出自 “乾楠有” 博客,请务必保留此出处http://changfei.blog.51cto.com/4848258/1663814
标签:form表达 http bottle python web开发
原文地址:http://changfei.blog.51cto.com/4848258/1663814