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

bottle框架学习(二)之HTTP请求

时间:2015-06-20 22:17:44      阅读:980      评论:0      收藏:0      [点我收藏+]

标签: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

bottle框架学习(二)之HTTP请求

标签:form表达   http   bottle   python   web开发   

原文地址:http://changfei.blog.51cto.com/4848258/1663814

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!