Flask 入门(四)

url反转

当我学习到url反转的时候,看了一个人写的例子,如下:

from flask import Flask,url_for
app = Flask(__name__)
 
@app.route('/')
def index():
    print url_for('my_list')
    print url_for('article',id='abc')
    return 'Hello World!'


@app.route('/list/')
def my_list():
    return 'list'


@app.route('/article/<id>/')
def article(id):
    return u'您请求的参数是:%s'%id
 
if __name__ == '__main__':
    app.run(debug=True)

看完后,我想,有什么用哪?,那两个print(url_for(......))语句,起到了什么作用?,它也没和我想的一样,打印出那两个函数的地址来啊,那写它干什么?

 

其实,url_for函数实现了视图函数到URL路径的转换,而且服务器经常利用这个路径实现视图函数的重定向,没听懂是吧,通俗的讲,就是,如果你想调用某个函数的时候,不必须使用路由函数,因为它的名字可能很长,也可以使用url_for(函数名)直接使用它,更方便的是它可以结合重定向函数redirect(路径)访问其它页面,例如:redirect(url_for('login')),注意,login是个函数名,它里面封装了进入登录页面的功能。废话少说,上代码:

 

首先,编辑index.py里面的代码:

from flask import Flask,url_for,redirect

app = Flask(__name__)

@app.route('/')

def index():

    return '欢迎学习url 反转'

 

@app.route('/path')

def path():

    return 'welcome to the path'

 

@app.route('/get_path/')

def get_path():

    return url_for('path')

 

@app.route('/go_path/')

def go_path():

    return redirect(url_for('path'))

 

if __name__ == '__main__':

    app.run(debug=True)

 

然后运行浏览器,

输入127.0.0.1:5000测试如下:

输入127.0.0.1:5000/get_path/测试如下:

 

输入127.0.0.1:5000/go_path测试如下:

 

相信聪明的你已经看出什么猫腻了吧,没错,它和127.0.0.1:5000:/path的效果一样,这就是它的作用!

 

posted @ 2018-07-17 11:35  IT蓝月  阅读(119)  评论(0编辑  收藏  举报
Live2D