使用bottle进行web开发(1):hello world
为什么使用bottle?因为简单,就一个py文件,和其他模块没有依赖,3000多行代码。
http://www.bottlepy.org/docs/dev/
既然开始学习,就安装它吧。
pip3 install bottle
ok
第一个代码:
from bottle import route,run,template
@route('/hello/<name>')
def index(name):
return template('<b>Hello {{name}}</b>!',name=name)
run(host='localhost',port=8080)
运行ok
从这段代码可以i看出来,bottle虽小,支持不差,包括route,template等,都支持。
而最后一行代码的run,实际上,就是启动一个内置的web server。3000多行代码,还包括一个这个,厉害。
处于简单的目的,我们后续学习,大部分时候,都是用一个module-level的装饰器route()去定义路由。这会把routes都加入到一个全局的缺省程序,当第一次调用route()的时候,Bottle的一个进程会被创建。
实际上,更应该代码是这样的;
from bottle import Bottle, run
app = Bottle()
@app.route('/hello')
def hello():
return "Hello World!"
run(app, host='localhost', port=8080)
上面的,route基本都是静态的,下面,我们介绍动态路由:
动态路由相对静态路由来说,用的更广泛,一次性匹配更多的url:
比如/hello/<name>可以匹配:/hello/wcf /hello/hanyu /hello/whoami 但是不匹配:/hello /hello/ /hello/wcf/ddd
举例如下;
@route('/wiki/<pagename>') # matches /wiki/Learning_Python
def show_wiki_page(pagename):
...
@route('/<action>/<user>') # matches /follow/defnull
def user_api(action,
这里,还需要关注动态路由的Filters(我称之为匹配器,目前有4种,可以增加更多),具体是:
:int matches (signed) digits only and converts the value to integer.
• :float similar to :int but for decimal numbers.
• :path matches all characters including the slash character in a non-greedy way and can be used to match more
than one path segment.
• :re allows you to specify a custom regular expression in the config field. The matched value is not modified
举例
from flask import Flask
app = Flask(__name__)
@app.route('/user/<int:user_id>'
def user(user_id):
return 'Hello,%d' %user_id
if __name__ == '__main__':
app.run(debug=True)
#coding:utf-8 from flask import Flask
from werkzeug.routing import BaseConverter #定义正则转换器的类
class RegexConverter(BaseConverter):
def __init__(self,url_map,*items):
super(RegexConverter, self).__init__(url_map)
self.regex=items[0] app = Flask(__name__)
#实例化
app.url_map.converters['regex']=RegexConverter @app.route('/user/<regex("([a-z]|[A-Z]){4}"):username>', methods=['POST', 'GET'])
def user(username):
return 'Hello,%s' % username if __name__ == '__main__':
app.run(debug=True)
代码如下;
使用bottle进行web开发(1):hello world的更多相关文章
- 使用bottle进行web开发(9):文件上传;json传递
1.文件上传 如果要完成文件上传,则需要对上文的form做一点改动,具体如下: <form action="/upload" method="post" ...
- 使用bottle进行web开发(8):get的参数传递,form里的额数据传递等
1.诸如:forum?id=1&page=5这样的,在bottle里,可以通过request.query来访问这些值,举例如下: from bottle import Bottle,run,r ...
- 使用bottle进行web开发(5):Generating Content
在纯粹的 WSGI中,你的应用能返回的数据类型是十分有限的,你必须返回可迭代的字符串,你能返回字符串是因为字符串是可以迭代的,但是这导致服务器将你的内容按一字符一字符的传送,这个时候,Unicode ...
- 使用bottle进行web开发(4):HTTPError
from bottle import error @error(404) def error404(error): return 'Nothing here, sorry' 上述代码,是对404的定义 ...
- 使用bottle进行web开发(2):http request
我们知道,http request有多个方法,比如get,post,delete,patch,put等.对用的,bottle都定义了相应的装饰器,目前定义了五个: get(),post(),put() ...
- 使用bottle进行web开发(6):Response 对象
Response的元数据(比如http的status code,headers,cookies等,都被i封装到一个叫Response的对象中,并传给浏览器. status code:status co ...
- 使用bottle进行web开发(3):静态文件的获取
静态文件(比如css啊,需要下载的各位文件等),需要通过static_file来操作,首先记得要在import中导入 @route('/static/<filename>') def se ...
- python bottle框架(WEB开发、运维开发)教程
教程目录 一:python基础(略,基础还是自己看书学吧) 二:bottle基础 python bottle web框架简介 python bottle 框架环境安装 python bottle 框架 ...
- bottle+cherrypy快速开发web服务
我目前用得最顺手的python web框架是bottle,简单方便. bottle有一个开发用的http服务器,效率不高,单线程,阻塞. 所以,得找个别的服务器来部署. 根据bottle官方的文档,发 ...
随机推荐
- c#集合的使用
//添加单个元素用Add方法 ArrayList list = new ArrayList(); list.Add(true); list.Add(); list.Add("小陈" ...
- 《移动App性能评测与优化》读书笔记
第一章:内存 内存的主要组成索引: Native Heap:Native代码分配的内存,虚拟机和Android框架本身也会分配 Dalvik Heap:Java代码分配的对象 Dalvik Oth ...
- Python全栈工程师(递归函数、闭包)
ParisGabriel 每天坚持手写 一天一篇 决定坚持几年 全栈工程师 Python人工智能从入门到精通 函数式编程: 是指用一系列函数解决问题 每一个函数完成细 ...
- Node rescue/unrescue相关代码流程图
- [译]在Linux中清空或删除大文件内容的5种方法
原文来源: https://www.tecmint.com/empty-delete-file-content-linux/ 有时,在处理Linux终端中的文件时,您可能希望清除文件的内容,而无需使用 ...
- windows mobile 开发:让GPS一直在待机模式下也能运行
最近,遇到一个需求,就是每 30 秒更新一次 GPS 位置,在测试过程中,发现在系统待机后,更新 GPS 位置就不能正常运行了,搜索后,发现如下的解决方案,实际应用了之后,有效,赞!!! http:/ ...
- springmvc maven搭建一
一.标题:使用maven搭建一个简单的web工程 二.涉及工具:Eclipse.maven.tomcat8.0.jdk1.8 三.操作: 完善项目:增加src/main/java,src/test/r ...
- PHP文件信息获取函数
知识点: basename():获取文件名,传入第二个参数则只显示文件名,不显示后缀 dirname():获取文件路径 pathinfo():将文件信息存入一个数组,通过索引basename,dirn ...
- MPS添加管理设备实例NS的过程
MPS添加管理设备实例NS的过程 MPS添加实例NS设备节点: > show snmp community Done > > add snmp community public al ...
- gerrit工具-workflow
gerrit-workflow