Bottle 路由

 

上面的例子我们构建了一个简单的只有一个单独路由的应用。如果一个应用只能绑定一个路由是多么枯燥的事情。我们可以添加更多。

    @route("/")

    @route("/hello/<name>")

    def hello(name='Stranger'):

        return template("Hello {{name}}, How are you?", name=name)

    这个例子解释了两件事情:

        1. 你可以绑定一个或者多个路由到一个简单的回调,并且你可有添加占位符到URL并且通过关键字参数访问。

 

动态路由

    含有占位符的路由就被叫做动态路由(和静态路由相对立)并且可以匹配一个或者多个URL在同一时间。

    一个简单的占位符就是<>之间包含一个名字并且在下一个/之前包含一个或者多个字符。

    例如:路由/hello/<name>接受请求/hello/alice, 或者 /hello/bob, 但是不是/hello, /hello/, /hello/mr/smith

 

    每一个占位符传递URL中相关的部分作为一个关键字参数给请求的回调函数也就是route绑定的函数。

    你可以立刻使用这种方式去实现RESTful,漂亮的,有意义的URL。例如:

    @route('/wiki/<pagename>')             #match /wiki/Learning_Python

    def show_wiki_page(pagename):

        ....

 

    @route('/<action>/<user>')          #match /follow/bee1314

        ....

 

    在新的0.10版本。过滤器被用来定义更细节的占位符,或者在传递给回调函数之前转化URL中将要传递给回调函数的部分。

    一个过滤器占位符被声明如:<name:filter>或者<name:fiter:config>.可选config的部分的语法依赖于使用的filter。

    下面的filter就是已经默认实现的或者更多的将要被加入的:

    1. :int 只能匹配(signed有符号)数字并且将其值转化为integer整型。

    2. :float 只能匹配浮点型将其转化为decimal 数字。

    3. :path 匹配所有的字符包括/ 

    4. :re 允许你去制定一个自定义的正则表达式在config域中。

 

    @route('/object/<id:int>')

    def callback(id):

        assert isinstance(id, int)

 

    @route('/show/<name:re:[a-z]+>')

    def callback(name):

        assert name.isalpha()

 

    @route('/static/<path:path>')

    def callback(path):

        return static_file(path, ...)

你可能感兴趣的:(python,Bottle)