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 ...
随机推荐
- 解决Ubuntu Server 12.04 在Hyper-v 2012 R2中不能使用动态内存的问题
前言 全新Hyper-v 2012 R2终于开始支持在Linux的VPS中使用动态内存,可以大大优化服务器的资源分配,小弟我兴奋不已,于是抽空时间赶紧升级到 2012 R2,好好整理一番内存分配,不过 ...
- JSON数据查询方法
在进行前端项目开发的时候时长会遇到JSON的数据查找问题,如何方便快速查找?这里推荐一个linqjs组件,项目主页参见http://linqjs.codeplex.com/ 查询对象 var json ...
- 【AspNetCore】【WebApi】扩展Webapi中的RouteConstraint中,让DateTime类型,支持时间格式化(DateTimeFormat)
扩展Webapi中的RouteConstraint中,让DateTime类型,支持时间格式化(DateTimeFormat) 一.背景 大家在使用WebApi时,会用到DateTime为参数,类似于这 ...
- 【腾讯Bugly干货分享】腾讯验证码的十二年
本文来自于腾讯bugly开发者社区,未经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/581301b146dfb1456904df8d Dev Club 是一个交流移动 ...
- [.net 面向对象编程基础] (14) 重构
[.net 面向对象编程基础] (14) 重构 通过面向对象三大特性:封装.继承.多态的学习,可以说我们已经掌握了面向对象的核心.接下来的学习就是如何让我们的代码更优雅.更高效.更易读.更易维护.当然 ...
- CSS3动画:YouTube的红色激光进度条
本文只是讨论和实现了动画效果,并未将动画与页面实际下载关联,有朋友们问如何应用,可以使用现成的一些插件比如这个,这个,还有这个. 之前一篇文章<CSS3 动画一瞥>简单介绍了CSS3动画相 ...
- AngularJS快速入门指南18:Application
是时候创建一个真正的AngularJS单页面应用程序了(SPA). 一个AngularJS应用程序示例 你已经了解了足够多的内容来创建第一个AngularJS应用程序: My Note Save Cl ...
- python 数据的拷贝
# -*- config=utf-8 -*- #数据的拷贝 a=[1,2,3,4,5,6,"a","C"]; b=a;# a 与 b 的地址空间相同 a.app ...
- MongoDB 简介
MongoDB 简介 介绍:MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案.特点:高性能.易部署.易使用,存储数据非常方便.主要功 ...
- java容器详细解析
前言:在java开发中我们肯定会大量的使用集合,在这里我将总结常见的集合类,每个集合类的优点和缺点,以便我们能更好的使用集合.下面我用一幅图来表示 其中淡绿色的表示接口,红色的表示我们经常使用的类. ...