• flask第十篇——url_for【3】


    继续url_for的知识点

    # coding: utf-8

    from flask import Flask, url_for
    import flask app = Flask(__name__)  # type: Flask
    app.debug = True

    # 根目录
    @app.route('/')
    def hello_world():    return 'Hello World!'

    @app.route('/login/<page_id>/')
    def login(page_id):    return u'登录页面'

    @app.route('/list/')
    def mylist():    return url_for('login', page_id=1, title_id=2)

    if __name__ == '__main__':    app.run()

    现在我们在mylist函数中的url_for多传一个参数,这时候会返回什么结果呢,执行代码可以看到:

    看上面的代码,如果现在我想在login函数中获取title_id,该怎么获取呢?我们之前已经写过的,我们可以通过修改login函数:

    @app.route('/login/<page_id>/')
    def login(page_id):    title_id = flask.request.args.get('title_id')
       return title_id

    这样,在页面访问127.0.0.1:5000/login/2/页面显示的就是title_id。

    现在我们来说url_for的另一个优点,就是它会自动对你传递的内容进行编码:

    # coding: utf-8

    from flask import Flask, url_for
    import flask app = Flask(__name__)  # type: Flask
    app.debug = True

    # 根目录
    @app.route('/')
    def hello_world():    return 'Hello World!'

    @app.route('/login/<page_id>/')
    def login(page_id):    return u'登录页面'

    @app.route('/list/')
    def mylist():    return url_for('login', page_id=1, title_id='/')

    if __name__ == '__main__':    app.run()

    上面代码中,我们在mylist函数中给login函数传了一个`title_id='/'`,然后页面中看到:

    页面对/进行了ASCII编码,/变成了%2F。这种机制就避免了url的混乱,比如我们地址是127.0.0.1:5000/login/,后面查询字符串中含有/,那地址就成了类似127.0.0.1:5000/login//这种url形式明显是错误的,但是如果我们用url_for,那么地址 就会自动转换为127.0.0.1:5000/login/%2F,如此一来就避免了url的错乱。

    大家千万不要忽视函数上面的@app.route(),找了好几个代码显示样式,就是怕大家忽视这个问题。

    请关注微信公众号:自动化测试实战,查看更好的排版及图片

  • 相关阅读:
    OAuth2.0系列之授权码模式实践教程(二)
    OAuth2.0系列之基本概念和运作流程(一)
    OAuth2.0系列之单点登录SSO实现
    Mybatis系列之设置自动提交事务
    springMVC系列之@Responsebody接口弹出f.txt下载问题
    Oracle应用之批量递增更新数据脚本
    前端 自定义弹出框-提示框(一)
    IE不兼容问题 字符串格式化
    JS 打开本地应用软件
    PPT导出为图片
  • 原文地址:https://www.cnblogs.com/captainmeng/p/8572834.html
Copyright © 2020-2023  润新知