前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >flask第十篇——url_for【3】

flask第十篇——url_for【3】

作者头像
孟船长
发布2018-05-21 10:27:57
5090
发布2018-05-21 10:27:57
举报

继续url_for的知识点

代码语言:javascript
复制
# 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函数:

代码语言:javascript
复制
@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的另一个优点,就是它会自动对你传递的内容进行编码:

代码语言:javascript
复制
# 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(),找了好几个代码显示样式,就是怕大家忽视这个问题。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-03-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 自动化测试实战 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档