match

match
  可以使用match()函数来获取匹配的结果。match()返回的是一个字典,包含controller和action的名称。下面是一个简单的例子。

from routes import Mapper

mapper = Mapper()

mapper.connect('volume-index',
             '/volumes',
             controller='volume_controller',
             action='index')

mapper.connect('images-show',
             '/images',
             controller='images_controller',
             action='show')

for m in mapper.matchlist:
    print('name: \t\t%s' % m.name)
    print('routepath: \t%s' % m.routepath)
    print('controller: \t%s' % m.defaults['controller'])
    print('action: \t\t%s' % m.defaults['action'])
    print('-' * 20)

urls = ('/abc', '/volumes', '/images')
for url in urls:
    result = mapper.match(url)
    print('result for %s: %r' % (url, result))

  程序输出:

name: volume-index
routepath: /volumes
controller: volume_controller
action: index
--------------------
name: images-show
routepath: /images
controller: images_controller
action: show
--------------------
result for /abc: None
result for /volumes: {'action': u'index', 'controller': u'volume_controller'}
result for /images: {'action': u'show', 'controller': u'images_controller'}

  在上面的例子中,先创建类Mapper的实例map,通过方法conect()创建url到应用/行为的映射,通过方法match可以进行匹配,并将结果返回。如果匹配失败,会返回None。对于/abc来说,在所有已建立的路由中都没有找到对应的项,所以会返回None,表示未找到匹配的路由。对于/volumes和/images,都找到了对应的路由,并返回了对应的ontroller和action。
参考资料:
  Routes Documentation