相比于 Django 和 Flask,web.py 是轻量到不能再轻量的 web 框架,全部的功能都须要本身实现,全部不适合中大型 web 的开发,不过对于简单的 api 服务或 web 展现,却是很友好。web
安装api
pip install web.py==0.40-dev1 # 必定要加==后面的dev,版本号通常选最新的
快速开始跨域
import web # url urls = ( '/(.*)', 'hello' ) # 生成一个app app = web.application(urls, globals()) # url映射的视图函数接受 class hello: # GET方法 def GET(self, name): if not name: name = 'World' return 'Hello, ' + name + '!' # POST方法 def POST(self, name): if not name: name = 'World' return 'Hello, ' + name + '!!!' if __name__ == "__main__": app.run()
此时运行这个文件,浏览器访问localhost:8080就能够获得hello world的页面(端口默认为8080) 浏览器
URL映射有3种类型:服务器
'/index','Index' # 由Index类处理 http://127.0.0.1:8080/index
'/post/\d+','Post' # 由Post类处理 如http://127.0.0.1:8080/post/3,post/后面带一个数字的URL
'/post2/(\d+)','Post2' # Post2类处理 如http://127.0.0.1:8080/post2/3,post2/后面带一个数字的URL,Post2类会接受处理url post2后面的参数。而模糊匹配的方式是不处理参数的
web.webapi.internalerror = web.debugerror
并在最后的“if name …” 添加”web.reloader“:app
if __name__ == "__main__": web.run(urls, globals(), web.reloader)
调试的阶段能获得更多有用的信息。web.reloader 实际上是一个中间件,在运行时若是修改了py文件,web.reloader 会从新加载文件,在浏览器上马上能够看到变化。不过变化较大时最好仍是须要从新启动服务器。web.py 也提供web.profiler ,能够输出有用的信息,有关每一个页面的每一个函数调用的次数,有助于改善代码。框架
web.py默认是不支持跨域请求的,解决方法是加一个钩子函数
# 实现一个函数 def customhook(): web.header('Access-Control-Allow-Origin', '*') web.header('Access-Control-Allow-Headers', 'Content-Type, Access-Control-Allow-Origin, Access-Control-Allow-Headers, X-Requested-By, Access-Control-Allow-Methods') # 本身生命的请求头中加的东西都放到这个字符串里来 web.header('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE') app.add_processor(web.loadhook(customhook))
同时在视图函数中实现一个 OPTIONS 方法工具
def OPTIONS(self): pass