欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Bottle 路由

程序员文章站 2022-07-15 09:13:22
...

 

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

    @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