zoukankan      html  css  js  c++  java
  • bottle.py中的路由解析代码

    # Routing
    def compile_route(route):
        """ Compiles a route string and returns a precompiled RegexObject.
    
        Routes may contain regular expressions with named groups to support url parameters.
        Example:
          '/user/(?P<id>[0-9]+)' will match '/user/5' with {'id':'5'}
    
        A more human readable syntax is supported too.
        Example:
          '/user/:id/:action' will match '/user/5/kiss' with {'id':'5', 'action':'kiss'}
          Placeholders match everything up to the next slash.
          '/user/:id#[0-9]+#' will match '/user/5' but not '/user/tim'
          Instead of "#" you can use any single special char other than "/"
        """
        route = route.strip().lstrip('$^/ ').rstrip('$^ ')
        # 将 /user/:id#[0-9]+#/ 转换为 /user/(?P<id>[0-9]+)/
        route = re.sub(r':([a-zA-Z_]+)(?P<uniq>[^w/])(?P<re>.+?)(?P=uniq)',r'(?P<1>g<re>)',route)
        # 将 /user/:id/ 转换为 /user/(?P<id>[^/]+)/
        route = re.sub(r':([a-zA-Z_]+)',r'(?P<1>[^/]+)', route)
        return re.compile('^/%s$' % route)
    
  • 相关阅读:
    Python基础(2)
    Python基础(3)
    Python基础(1)
    [日本语]单词1
    【.Net】 C#参数数组与函数重载
    pyenv
    Pip批量安装/卸载包
    Xcode中模拟器慢
    iPhone的设备名转换
    在python命令行执行sudo命令
  • 原文地址:https://www.cnblogs.com/tuzkee/p/6349822.html
Copyright © 2011-2022 走看看