安装:pip install web.py
特点:轻型框架
初始化组件及路由设置:
from __future__ import absolute_import, print_function
import json
import urllib
import urllib2
import urlparse
import socket
import tempfile
import cookielib
import web
from web import webapi
from web import template
from web.debugerror import debugerror
from web.application import application
from web.session import Session
from web.session import DiskStore
from web.httpserver import StaticMiddleware
def init_ds():
root = tempfile.mkdtemp()
s = DiskStore(root)
return s
def init_opener(cookies):
opener = urllib2.build_opener(urllib2.HTTPHandler(),
urllib2.HTTPCookieProcessor(cookies))
return opener
def main():
urls = (
'/', 'HomePage',
'/rev', 'RevData') #路由管理
app = application(urls, globals())
app.internalerror = debugerror
if web.config.get('_session') is None:
ds = init_ds()
session = Session(app, ds)
web.config._session = session
if web.config.get('_render') is None:
render = template.render('templates',
globals={'context': session})
web.config._render = render
if web.config.get('_cookies') is None:
cookies = cookielib.CookieJar()
web.config._cookies = cookies
if web.config.get('_opener') is None:
opener = init_opener(web.config._cookies)
web.config._opener = opener
if web.config.get('_rev') is None:
web.config._rev = {}
app.wsgifunc(StaticMiddleware)
return app
if __name__ == '__main__':
socket.setdefaulttimeout(20)
app = main()
app.run()
class组件 :
class BaseHandler(object):
def __init__(self):
self.render = web.config._render
self.session = web.config._session
self.opener = web.config._opener
def POST(self):
raise webapi.NoMethod()
def GET(self):
raise webapi.NoMethod()
def API(self, url, data):
src_data = {'parameter': json.dumps(data)}
data = urllib.urlencode(src_data)
req = urllib2.Request(url, data=data)
req.add_header('CONTENT_TYPE','application/x-www-form-urlencoded')
req.add_header('Accept', 'application/json')
resp = None
try:
resp = self.opener.open(req)
except Exception,e:
traceback.print_exc(e)
return req, resp
def RenderJSON(self, req, resp):
pass
def JSON(self, data):
webapi.header('Content-type','application/json', True)
return json.dumps(data)
实例化使用:
class HomePage(BaseHandler): #获取主页
def GET(self):
return self.render.index()
class GetMethod(BaseHandler):
def GET(self): #get方法
data = webapi.rawinput('GET') #获取payload
web.header("Access-Control-Allow-Origin", "*") #允许跨域
return 'success'
class PostMethod(BaseHandler):
def POST(self):
web.header("Access-Control-Allow-Origin", "*") #允许跨域
data = web.data() #获取payload
return 'success'