想理解URL反转,那就得先知道URL正转。也就是用户在浏览器地址栏中输入一个URL,然后回车,浏览器就可以取到在Flask中定义的route下的视图函数所返回的内容。简单的说就是知道URL找视图函数。

如下面的代码:用户输入http://127.0.0.1:5000/userinfo/username 回车,就会返回userinfo(name)这个视图函数定义的return内容。正转的URL就是/userinfo/<username>

@app.route('/userinfo/<name>')
def userinfo(name):
    return "User name is: %s" %name

反转URL就是知道视图函数的名称,就可以知道URL。要想使用URL反转功能,先导入url_for

还是直接上代码上图吧,一目了然:

from flask import Flask, url_for

app = Flask(__name__)

@app.route("/")
def hello_flask():
    url_reverse01 = url_for('article',id='asdfasdf')
    url_reverse02 = url_for('userinfo',name='uncleBen')
    return "Here is the first URL reverse:  {}, <br> Here is the second URL reverse: {}".format(url_reverse01, url_reverse02)

@app.route('/article/<id>')
def article(id):
    return "Your request parameter is %s" %id

@app.route('/userinfo/<name>')
def userinfo(name):
    return "User name is: %s" %name

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

实际效果如下:

小结:

  1. 使用URL反转之前,必须先导入url_for。
  2. url_for('视图函数名称','视图函数参数,如果有的话')。url_for()这个函数里面的参数一定要有引号!!!
  3. URL反转可以用于: - 网页重定向 - 网页模板中

下篇将介绍网页之间的跳转和URL重定向。