route 可以从url提取相应的参数,如controller,action或者其它用户自己定义的变量
1.Mapper().connect Mapper().match
from routes import Mapper
map = Mapper()
map.connect(None,"error/{action}/{id}",controller="controller_obj") #定义匹配规则
result = map.match('error/myapp/4') #匹配url='error/myapp/4'
#result 匹配结果
{'action': u'myapp', 'controller': u'controller_obj', 'id': u'4'}
map.connect(None,"/message/:name",controller='my_contro') #除 {} 外,:也可以作为匹配符号
result = map.match('/message/12')
#result 匹配结果
{'controller': u'my_contro', 'name': u'12'}
2.route.middleware以及Mapper.resource
参照cinder 2013.1版代码写的
#!/usr/bin/env/python
#coding=utf-8
from routes import Mapper
from routes import middleware
import webob.dec
from wsgiref.simple_server import make_server
class controller(object):
def __init__(self):
self.i = 1
def __call__(self):
print self.i
def search(self):
return "do search()"
def show(self):
return "do show()"
def index(self):
return "do index()"
def update(self):
return "do update()"
def delete(self):
return "do delete()"
def create(self):
return "do create()"
def create_many(self):
return "do create_many()"
def update_many(self):
return "do update_many()"
def list_many(self):
return "do list_many()"
def delete_many(self):
return "do delete_many()"
class appclass(object):
def __init__(self):
a = controller()
map = Mapper()
"""路由匹配条件1"""
#map.connect('/images',controller=a,
# action='search',
# conditions={'method':['GET']})
"""路由匹配条件2"""
#map.connect('name',"/{action}/{pid}",controller=a)
"""路由匹配条件3"""
#map.resource("message","messages",controller=a,collection={'search':'GET'})
"""路由匹配条件4"""
#map.resource('message', 'messages',controller=a,
#collection={'list_many':'GET','create_many':'POST'},
#member={'update_many':'POST','delete_many':'POST'})