[Python网络编程] web.py框架简单使用

安装: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'

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值