美文网首页
Flask-路由

Flask-路由

作者: 遇明不散 | 来源:发表于2019-05-02 11:51 被阅读0次

    路由(route)

    什么是路由
    • 客户端将请求发送给web服务器,web服务器再将请求发送给flask程序实例,程序实例需要知道每个url请求要运行哪些代码,所以需要建立一个 url 到 python函数的映射,处理url和函数之间的关系的程序就是路由。
    • 在Flask中,路由是通过 @app.route 装饰器来表示的。
    路由的体现
    路由的基本表示
    # app可以自定义
    @app.route('/')
    def index():
        reutrn "xxx"
    
    @app.route('/login')
    def login():
        return 'xxx'
    
    带参数的路由
    • 基本带参路由
    @app.route('/show/<name>')
    def show(name):
        # 在函数中 name 表示的就是地址栏上传递过来的数据
        return 'xxx'
    
    • 带多个参数的路由
    @app.route('/show/<name1>/<name2>')
    def show2(name1,name2):
        reutrn 'xxx'
    
    • 指定参数类型的路由
    # <int:age>:表示age参数时一个整型的数值而并非默认的字符串
    # Flask 中所支持的类型转换器
    @app.route('/show/<name>/<int:age>')
    def show(name,age):
        return 'xxx'
    
    • Flask中所支持的类型转换器
    # 类型转换器     作用
    # 缺省          字符串型,但不能有/(斜杠)
    # int:          整型
    # float:        浮点型
    # path:         字符串型,可以有 / (斜杠)
    
    • 示例程序
    from flask import Flask
    app = Flask(__name__)
    
    @app.route('/show1/<name>')
    def show(name):
        return "<h1>姓名为:%s</h1>" % name
    
    @app.route('/show2/<name>/<age>')
    def show1(name,age):
        return "<h1>姓名为:%s,年龄是:%s </h1>" % (name,age)
    
    @app.route('/show3/<name>/<int:age>')
    def show2(name,age):
        return "<h1>指定类型->姓名为:%s,年龄是:%d </h1>" % (name,age)
    
    if __name__ == "__main__":
        app.run(debug = True)
    
    多URL的路由匹配

    允许在一个视图处理函数中设置多个url路由规则

    @app.route('/')
    @app.route('/index')
    def index():
        reutrn "xxx"
    
    • 示例程序
    from flask import Flask
    app = Flask(__name__)
    
    @app.route('/')
    @app.route('/index')
    @app.route('/<int:page>')
    # 缺省参数默认值设置为 None
    def index(page = None):
        if page is None:
            page = 1
        return 'The page is %d' % page
    
    if __name__ == "__main__":
        app.run(debug = True)
    
    路由中设置HTTP请求方法

    Flask路由规则也允许设置对应的请求方法,只有将匹配上请求方法的路径交给视图处理函数去执行

    # @app.route('/post',methods=['GET'])
    # 只有post请求方式允许访问 localhost:5000/post
    @app.route('/post',methods=['POST'])
    def post():
        return 'xxxx'
    
    URL的反向解析
    • 正向解析
      程序自动解析,根据@app.route()中的访问路径来匹配处理函数
    • 反向解析
      通过视图处理函数的名称自动生成视图处理函数的访问路径
    # 此函数,用于反向解析 url
    # 第一个参数:指向函数名(通过@app.route()修饰的函数)
    # 后续的参数:对应要构建的url上的变量
    url_for() 
    
    # 静态文件反向解析
    url_for('static',filename='style.css')
    
    • 示例
    @app.route('/')
    def index():
        return "Index"
    url_for('index')  # 结果为:/
    
    @app.route('/show/<name>')
    def show(name):
        reutrn "name:%s" % name
    url_for('show',name='zsf') # 结果为:/show/zsf
    

    相关文章

      网友评论

          本文标题:Flask-路由

          本文链接:https://www.haomeiwen.com/subject/hvygnqtx.html