web框架--bottle
大亮头
2024-11-08 02:13:45
原文
2
3
4
pip install bottle
easy_install bottle
apt - get install python - bottle
wget http: / / bottlepy.org / bottle.py
|
bottle介绍
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from bottle import template, Bottle
root = Bottle()
@root .route( '/hello/' )
def index():
return "Hello World"
# return template('<b>Hello {{name}}</b>!', name="Alex")
root.run(host = 'localhost' , port = 8080 )
|
具体介绍
一、路由系统
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@root .route( '/wiki/<pagename>' ) #<>号是规定格式,
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
@root .route( '/hello/' , method = 'POST' )
def index():
...
@root .get( '/hello/' ) #代表只接收get请求
def index():
...
@root .post( '/hello/' )
def index():
...
@root .put( '/hello/' )
def index():
...
@root .delete( '/hello/' )
def index():
...
|
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from bottle import template, Bottle
from bottle import static_file
root = Bottle()
@root .route( '/hello/' )
def index():
return template( '<b>Root {{name}}</b>!' , name = "Alex" )
from framwork_bottle import app01
from framwork_bottle import app02
root.mount( 'app01' , app01.app01) #挂载之后,app01开头的都会交有app01.app01对象去处理
root.mount( 'app02' , app02.app02)
root.run(host = 'localhost' , port = 8080 )
|
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from bottle import template, Bottle
app01 = Bottle()
@app01 .route( '/hello/' , method = 'GET' )
def index():
return template( '<b>App01</b>!' )
app01.py
|
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
request.headers
HTTP 请求头信息 (ip,浏览器......)
request.query
get 请求信息 /?page=123
request.forms
post请求信息
request.files
上传文件信息
request.params
get 和post请求信息
request.GET
get 请求信息
request.POST
post和上传信息
request.cookies
cookie信息
request.environ
环境相关相关 #上面没有的都在这里
|
2、响应相关内容:response
当开发人员的代码处理完用户请求之后,会将其执行内容相应给用户,相应的内容会封装在Bottle的response中,然后再由框架将内容返回给用户
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
response
response.status_line
状态行
response.status_code
状态码
response.headers
响应头
response.charset
编码
response.set_cookie
在浏览器上设置cookie
response.delete_cookie
在浏览器上删除cookie
|
所以,公共组件本质其实就是为开发人员提供接口,使其能够获取用户信息并配置响应内容。
四、服务
对于Bottle框架其本身未实现类似于Tornado自己基于socket实现Web服务,所以必须依赖WSGI,默认Bottle已经实现并且支持的WSGI有:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
server_names = {
'cgi' : CGIServer,
'flup' : FlupFCGIServer,
'wsgiref' : WSGIRefServer,
'waitress' : WaitressServer,
'cherrypy' : CherryPyServer,
'paste' : PasteServer,
'fapws3' : FapwsServer,
'tornado' : TornadoServer,
'gae' : AppEngineServer,
'twisted' : TwistedServer,
'diesel' : DieselServer,
'meinheld' : MeinheldServer,
'gunicorn' : GunicornServer,
'eventlet' : EventletServer,
'gevent' : GeventServer,
'geventSocketIO' :GeventSocketIOServer,
'rocket' : RocketServer,
'bjoern' : BjoernServer,
'auto' : AutoServer,
}
|
使用时,只需在主app执行run方法时指定参数即可:
1
2
3
4
5
6
7
8
9
10
|
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from bottle import Bottle
root = Bottle()
@root .route( '/hello/' )
def index():
return "Hello World"
# 默认server ='wsgiref'
root.run(host = 'localhost' , port = 8080 , server = 'wsgiref' )
|
默认server="wsgiref",即:使用Python内置模块wsgiref,如果想要使用其他时,则需要首先安装相关类库,然后才能使用。如:
1
2
3
4
5
6
7
8
9
10
11
|
# 如果使用Tornado的服务,则需要首先安装tornado才能使用
# bottle.py源码
class TornadoServer(ServerAdapter):
""" The super hyped asynchronous server by facebook. Untested. """
def run( self , handler): # pragma: no cover
# 导入Tornado相关模块
import tornado.wsgi, tornado.httpserver, tornado.ioloop
container = tornado.wsgi.WSGIContainer(handler)
server = tornado.httpserver.HTTPServer(container)
server.listen(port = self .port,address = self .host)
tornado.ioloop.IOLoop.instance().start()
|
PS:以上WSGI中提供了19种,如果想要使期支持其他服务,则需要扩展Bottle源码来自定义一个ServerAdapter
更多参见:http://www.bottlepy.org/docs/dev/index.html
- 微型 Python Web 框架 Bottle - Heroin blog
微型 Python Web 框架 Bottle - Heroin blog 微型 Python Web 框架 Bottle
- 轻量的web框架Bottle
简洁的web框架Bottle 简介 Bottle是一个非常简洁,轻量web框架,与django形成鲜明的对比,它只由一个单文件组成,文件总共只有3700多行代码,依赖只有python标准库.但是麻雀虽 ...
- Python Web框架 bottle flask
Bottle Bottle是一个快速.简洁.轻量级的基于WSIG的微型Web框架,此框架只由一个 .py 文件,除了Python的标准库外,其不依赖任何其他模块. 1 2 3 4 pip instal ...
- python web框架(bottle,flask,tornado)
Python的WEB框架 Bottle Bottle是一个快速.简洁.轻量级的基于WSIG的微型Web框架,此框架只由一个 .py 文件,除了Python的标准库外,其不依赖任何其他模块. pip i ...
- Web框架们
Python之路[第十八篇]:Web框架们 Python的WEB框架 Bottle Bottle是一个快速.简洁.轻量级的基于WSIG的微型Web框架,此框架只由一个 .py 文件,除了Pytho ...
- Python之路【第十八篇】:Web框架们
Python之路[第十八篇]:Web框架们 Python的WEB框架 Bottle Bottle是一个快速.简洁.轻量级的基于WSIG的微型Web框架,此框架只由一个 .py 文件,除了Pytho ...
- Python之Web框架们
Python的WEB框架 Bottle Bottle是一个快速.简洁.轻量级的基于WSIG的微型Web框架,此框架只由一个 .py 文件,除了Python的标准库外,其不依赖任何其他模块. pip i ...
- Django:之不得不说的web框架们
python的web框架 Bottle Bpttle是一个快速.简洁.轻量级的基于WSIG的微型web框架,此框架只有一个.py文件,除了python的标准库外,其不依赖任何其它模块. pip ins ...
- web框架和django基础(粗糙版)
web框架本质: 浏览器:socket客户端 服务器:socket服务端 1.自己写socket服务端(最傻) #!/usr/bin/env python ...
随机推荐
- 公共代码参考(Volley)
Volley 是google提供的一个网络库,相对于自己写httpclient确实方便很多,本文参考部分网上例子整理如下,以作备忘: 定义一个缓存类: public class BitmapCache ...
- Java设计模式8:迭代器模式
迭代器模式 迭代器模式又叫做游标(Cursor)模式,其作用是提供一种方法访问一个容器元素中的各个对象,而又不暴露该对象的内部细节. 迭代器模式结构 迭代器模式由以下角色组成: 1.迭代器角色 负责定 ...
- Hadoop日记Day12---MapReduce学习
一.MapReduce简介 1.1MapReduce概述 MapReduce是一种分布式计算模型,由Google提出,主要用于搜索领域,解决海量数据的计算问题.MR由两个阶段组成:Map和Reduce ...
- 用Nim语言开发windows GUI图形界面程序
前言 本文得到了“樂師”的大力支持, 我们一起调试程序到深夜,要是没有他的帮忙, 我不知道要多久才能迈过这道坎, 另外“归心”还有其他人也提供了帮助, 他们都来自于QQ群:“Nim开发集中营”4693 ...
- [.net 面向对象编程基础] (19) LINQ基础
[.net 面向对象编程基础] (19) LINQ基础 上两节我们介绍了.net的数组.集合和泛型.我们说到,数组是从以前编程语言延伸过来的一种引用类型,采用事先定义长度分配存储区域的方式.而集合是 ...
- Windows Azure Virtual Machine (25) 使用SSH登录Azure Linux虚拟机
<Windows Azure Platform 系列文章目录> 本文介绍内容适合于Azure Global和Azure China 为什么使用SSH登录Azure Linux虚拟机? 我们 ...
- [HIMCM暑期班]第1课:概述
作为这个系列的开始,我会把每一节课上过的内容,与同学们互动后发现他们的闪光点记录下来,以后其他要准备该比赛的人借鉴和参考. 第一节课是概述,主要讲什么是数学建模,还有建模可以帮助我们做什么.举了三个例 ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(五):使用Senparc.Weixin.MP SDK
Senparc.Weixin.MP SDK已经涵盖了微信6.x的所有公共API. 整个项目的源代码以及已经编译好的程序集可以在这个项目中获取到:https://github.com/JeffreySu ...
- MVVM架构~knockoutjs系列之验证信息自定义输出~续
返回目录 上一讲中,我以一个实际中的例子说明了knockoutjs的自定义验证功能,在使用过程中,出现了一个问题,当然了不是问题,只是一种需求,上一讲中自定义验证的表现是:当页面加载后,自动显示有问题 ...
- atitit opencv apiattilax总结 约500个函数 .xlsx
atitit opencv apiattilax总结 约500个函数 .xlsx 1.1. CxCore中文参考手册 1 1.2. 机器学习中文参考手册 knn svm 1 1.3. CvAu ...