connect

connect
  routes库提供的最重要的类是Mapper,此类负责url映射的建立、保存和匹配。可以使用Mapper的方法connect()来建立url映射。
  我们先来介绍一下connect()的参数。
    name:路由的名称。可以指定希望的路由名,也可以使用None以建立无名路由。
    routepath:路由的路径。
    controller:控制其的名称,字符串形式
    action:行动的名称,字符串形式
    conditions:限制,字典形式
    requirements:要求,字典形式
  下面是一个使用connect()建立路由的例子。

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)

  程序输出:

name: volume-index
routepath: /volumes
controller: volume_controller
action: index
--------------------
name: images-show
routepath: /images
controller: images_controller
action: show
--------------------


  上面的例子建立了两个路由,路由的信息保存在matchlist中。路由的名称分别为volume-index和images-show。
  除了上例中使用connect()的方法外,还有其它的用法,表示如下。
  map.connect(None, "/error/{action}/{id}", controller="error")定义了一个route,此route没有名字(即无名route),匹配/error/.../...的url,并能够解析出action和id;
  map.connect("home", "/", controller="main", action="index")定义了一个route,此route的名称为home,匹配/的url,并设定controller为main,action为index。
  map.connect(None, "/error/{action}/{id}",
controller="error", requirements={"id": R"\d+"})只匹配id为数字的url。
  map.connect("/download/{platform}/{filename}", requirements={"platform": R"windows|mac"})只匹配platform为"windows"或"mac"的url。
  map.connect("/user/list", controller="user", action="list",
         conditions=dict(method=["GET"]))只匹配method为GET的url。
参考资料:
  Setting up routes