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

HTTP 请求方法

HTTP 协议有很多种请求方法。route默认使用GET方法,只响应GET请求。method参数可以给route()函数指定使用哪种方法。或用get(),post(),put()或delete()等函数来代替route()函数。

POST 方法一般用于HTML 表单的提交。下面是一个使用POST 来实现用户登录的例子:

[[email protected]]# 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方法来获取,例如:

[[email protected]]# 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,一个回调函数(用于查找和控制静态文件的访问)。

[[email protected]]# 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

时间: 2024-08-04 17:18:36

bottle框架学习(二)之HTTP请求的相关文章

Struts2框架学习(二) Action

Struts2框架学习(二) Action Struts2框架中的Action类是一个单独的javabean对象.不像Struts1中还要去继承HttpServlet,耦合度减小了. 1,流程 拦截器拦截请求,创建代理Action对象,执行方法,返回结果,界面跳转. 拦截器解析请求路径,获取Action的名称,到配置文件中查找action的完整类名,利用反射创建对象. 每请求一次,就创建一个对象,所以action是多例的,也是线程安全的. 2,关系 请求的路径和配置文件的对应关系: 配置文件中包

Android Afinal框架学习(二) FinalActivity 一个IOC框架

框架地址:https://github.com/yangfuhai/afinal 对应的源码: net.tsz.afinal.annotation.view.* FinalActivity FinalActivity是一个基础类,结合注解实现了,依赖注入(view的资源id,常用的监听器), 利用set方式注入 完全注解方式就可以进行UI绑定和事件绑定,无需findViewById和set event Listener 这个过程:initInjectedView>findViewById.set

bottle框架学习(一)之安装以及路由的使用

安装bottle: [[email protected] bottle]#  yum install python-devel python-setuptools -y [[email protected] bottle]#  easy_install pip [[email protected] bottle]#  pip install bottle 官方文档:http://www.bottlepy.org/docs/dev/index.html 静态路由 [[email protected

bottle框架学习(八)之Mysql数据库的操作

MySQLdb 是用于Python连接Mysql数据库的接口. 安装MySQLdb [[email protected] bottle]# yum install MySQL-python –y 如果使用编译安装请到这里下载安装包https://pypi.python.org/pypi/MySQL-python并执行以下命令 [[email protected] bottle]# gunzip  MySQL-python-1.2.3.tar.gz [[email protected] bottl

laravel框架学习(二)

在了解Laravel框架的基本结构之后,初步认识访问过程中路由的使用方法,以一套基本的学生信息增删改查来迅速学习框架开发. 首先了解几个目录文件作为开发的主要阵地: 1. /app/Http/routes.php 路由文件,一切访问从路由开始 2./app/Http/Controllers 控制器目录,我们写的控制器都放在该目录下 3./app/config Laravel配置文件夹一般修改.env文件 4./.env 经常修改配置的文件,数据库配置就在这里 5./public Laravel框

从零开始设计SOA框架(二):请求/响应参数的设计

每个接口都有请求参数.响应参数.其中请求参数分为公共参数和业务参数.响应参数分为两类:正常的响应参数.统一的错误参数 一.请求参数 1.公共参数:每个接口都有的参数,主要包含appkey.时间戳.版本.响应格式.session 参考淘宝开放平台如下: 公共请求参数:a) session:有些接口需要登陆后才能调用,所以需要传递session参数b) timestamp:用于验证相同一组参数值不能重复使用,如其它参数都一样,timestamp也一样可考虑是否参数被他人截获并反复调用,服务端遇到这种

Android 学习笔记之AndBase框架学习(二) 使用封装好的进度框,Toast框,弹出框,确认框...

PS:渐渐明白,在实验室呆三年都不如在企业呆一年... 学习内容: 1.使用AbActivity内部封装的方法实现进度框,Toast框,弹出框,确认框...   AndBase中AbActivity封装好了许多方法提供我们去使用,使得在使用的时候更加的方便,只需要传递相关参数即可..省去了我们自己使用基础的函数进行构造...   就好比进度框,Toast框,弹出框,确认框...这些基本的东西都在AndBase的AbActivity封装好了...我们只需要传递参数调用其中内部的方法就可以完成这些视

Hibernate框架学习(二)——api详解

一.Configuration对象 功能:配置加载类,用于加载主配置,orm元数据加载. 1 //1.创建,调用空参构造(还没有读配置文件) 2 Configuration conf=new Configuration(); 3 //2.读取指令配置文件=>空参加载方法,加载src下的hibernate.cfg.xml文件 4 conf.configure(); 5 6 //3.读取指定orm元数据(扩展),如果主配置中已经引入映射配置,不需要手动加载 7 //conf.addResource(

bottle框架学习(七)之session的使用

Bottle 自身并没有提供Session的支持,,可以使用beaker中间件或自己实现.Beaker是一个缓存和会话的库,与Web 应用程序和独立的Python 脚本及应用程序一起使用.它是WSGI 的中间件,能够很简单地嵌入,与基于 WSGI 的 Web 应用程序一起使用,并且缓存修饰器对于任何基于 Python 的应用程序都是容易使用的. beaker文档:http://beaker.readthedocs.org/en/latest/index.html 安装beaker [[email