zoukankan      html  css  js  c++  java
  • flask的路由和变量规则

    @app.route('/')

    app是创建的应用对象,‘/’就是路由,表示如果输入了这个地址,那么flask就会调用对应的demo1()函数来进行处理

    我们可以给应用定义多个路由,这样不同的url就会有不同的处理函数:

        from flask import Flask
        app1 = Flask('first_flask_demo')
        @app1.route('/')
        def demo1():
            return 'Welcome to python in one'
        @app1.route('/api_demo2')        # 定义另外一个路由
        def api_demo2():
            return 'you are visiting api_demo2'
        if __name__ == '__main__':
            app1.run()

    运行后在浏览器中即可输入地址 http://localhost:5000/api_demo2 来查看这个新的地址。

    通过路由规则add_url_rule将view与route绑定实现

    from flask import Flask
    import setting
    app = Flask(__name__)
    app.config.from_object(setting)

    @app.route('/')

    def hello():
    return 'hello world'

    def index():
    return 'test'

    app.add_url_rule('/index',view_func=index)
    if __name__ == '__main__': app.run(host='127.0.0.1', port=8000)

     运行后查看结果

    动态路由

    前面介绍的是静态路由,但有些 URL 的格式是 /user/alex,其中 alex 表示用户名,不同的用户会有不同的名字。例如用户名是 bob,那么其对应的 URL 就是 /user/bob。这种情况下可以使用变量来代替名字部分,方法如下:

    app.route('/user/<username>')

    在处理函数内部可以使用变量 username 来获得输入参数的实际值。下面是一个简单的例子:

        from flask import Flask
        app1 = Flask('first_flask_demo')
        @app1.route('/user/<username>')        # 指定了格式
        def demo1(username):                    # username是用户从地址上的输入
            return 'Welcome %s' % username
        if __name__ == '__main__':
            app1.run(debug=True, host='0.0.0.0', port=8080)

    运行后在浏览器中输入地址 http://localhost:8080/user/alex,可以看到输出为 Welcome alex

     如果在浏览器中输入地址 http://localhost:8080/user/alice,则可以看到输出为 Welcome alice

    限定类型

    如果希望限定输入的动态字段的类型,可以使用 <类型:变量名> 来实现,例如如果希望某个字段只能是整数,那么可以写为 /user/<int:user_id>。

    下面是一个简单的例子:

        from flask import Flask                    # 引入Flask
        app1 = Flask('first_flask_demo')        # 创建应用程序
        @app1.route('/user/<int:userid>')        # 限定参数userid只能是整数
        def demo1(userid):
            return 'Welcome you [User %d]' % userid
        if __name__ == '__main__':
            app1.run(debug=True, host='0.0.0.0', port=8080)

    运行后在浏览器中输入地址 http://localhost:8080/user/12,可以看到 Welcome you[User12] 这样的输出

     如果输入的不是整数,例如,输入的地址是 http://localhost:8080/user/alex,则可看到 404 错误

    地址尾部的“/”

    如果路由的尾部带有“/”,那么在浏览器的地址栏中输入“/”和不输入“/”的效果是一样的。如果路由的尾部没有“/”,那么在浏览器的地址栏中是不能输入“/”的,否则会出错。

    例如下面的代码:

        from flask import Flask                # 引入flask模块
        app1 = Flask('first_flask_demo')    # 应用程序
        @app1.route('/projects/')            # 注意:尾部带有“/如果路由当中有“/” 在请求的时候不管是否有“/” 都会访问成功
        def projects():
            return 'The PROJECTS page'
        @app1.route('/about')                # 注意:尾部没有“/” 如果路由当中添加“/” 访问地址为:http://127.0.0.1:5000/about/ 会报错 not fond
        def about():
            return 'The ABOUT page'
        if __name__ == '__main__':            # 如果是运行该脚本
            app1.run(debug=True, host='0.0.0.0', port=8080)

    在输入 http://localhost:8080/projects/ 地址时,一切正常。

     如果在浏览器的地址栏中输入 http://localhost:8080/projects,则会自动重定向到 http://localhost:8080/projects/,也没有问题。

    如果输入 http://localhost:8080/about,一切正常。

    如果输入 http://localhost:8080/about/,则会得到 404 错误

     目前 Flask 支持的类型如表 6 所示。

    表 6 Flask支持的数据类型含义
    类 型 含 义
    string 接受任何不包含斜杠的文本,这是默认值
    int 接受正整数
    float 接受正浮点数
    path 类似 string,但可以包含斜杠
    uuid 接受 UUID 字符串
  • 相关阅读:
    vim同时打开编辑多个文件
    OOB区之初认识
    nandflash擦除、写操作的状态判断
    NFS挂载文件系统:unable to get mount port number from server, using default
    交叉调试出错
    (转)C++中extern “C”含义深层探索
    arm汇编程序中的[|]
    nanflash编程的地址问题
    c# ListView控件的常用屬性、方法及事件
    ListBox常用屬性和常用事件
  • 原文地址:https://www.cnblogs.com/fat-girl-spring/p/15103854.html
Copyright © 2011-2022 走看看