WSGI、webob、routes实例

程序代码:

from wsgiref.simple_server import make_server
from routes import Mapper,middleware
from webob import Request,Response
import webob.dec
import webob.exc

class Controller:
    @webob.dec.wsgify
    def __call__(self, req):
        return Response("Hello World!")

class Router(object):
    def __init__(self):
        self.mapper = Mapper()
        self.mapper.connect('/lixin',controller=Controller(), action='index',conditions={'method': ['GET']})
        self.router = middleware.RoutesMiddleware(self.dispatch, self.mapper) #创建实例,调用的时候进行路由匹配,修改环境变量

    @webob.dec.wsgify
    def __call__(self, req):

        urll = ['%s : %s' % (k,v) for k,v in sorted(req.environ.items())]
        print '\n'.join(urll) #原始的环境变量
        return self.router

    @staticmethod
    @webob.dec.wsgify
    def dispatch(req):
        urll = ['%s : %s' % (k,v) for k,v in sorted(req.environ.items())]
        print '\n'.join(urll)   #从这里可以看出来环境变量已经改变了
        match = req.environ['wsgiorg.routing_args'][1]

        if not match:
            return webob.exc.HTTPNotFound()

        app = match['controller']
        return app

app = Router()
print app
print 'Listen port on 8000'
httpd = make_server('localhost', 8000, app)
httpd.serve_forever()
输出结果:

self.mapper = Mapper()    创建一个Mapper()

self.mapper.connect          注册一个路由

self.router = middleware.RoutesMiddleware(self.dispatch, self.mapper) 创建一个RoutesMiddleware对象,匹配路由,修改环境变量后,调用self.dispatch




基本上这一块的知识点掌握的还可以,终于可以往下进行了!!!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值