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的效果一样,这就是它的作用!