文章目录一、url_for构造URL和指定地址末尾的/1.通过url_for构造URL2.指定URL末尾的斜杠二、指定HTTP方法三、页面跳转和重定向四、函数的返回值 – 响应(Response)五、flask模板简介六、flask模板传参
一、url_for构造URL和指定地址末尾的/
1.通过url_for构造URL
一般我们通过一个URL就可以映射到某一个函数。反过来,知道一个函数时,也可以获得对应的URL,url_for()函数可以进行反转、实现这个功能。
url_for()函数接收一个及以上的参数,第一个参数是函数名,接收对应URL规则的命名参数,如果函数中有参数,则将这些参数传入url_for()函数第一个参数的后面。
进行测试:
from flask import Flask,url_for
app = Flask(__name__)
@app.route('/')
def index():
# 根据函数的名字进行反转,得到函数对应的路由
print(url_for('article_list',aid=2))
return 'Hello World'
@app.route('/article/')
def article_list(aid):
return 'article %s' % aid
if __name__ == '__main__':
app.run(debug=True)
运行开启服务后访问http://127.0.0.1:5000/,打印
127.0.0.1 - - [09/Apr/2020 16:46:24] "GET /article/3 HTTP/1.1" 200 -
127.0.0.1 - - [09/Apr/2020 16:46:30] "GET / HTTP/1.1" 200 -
/article/2
显然,此时通过url_for()方法得到了一个函数对应的路由,并显示在日志中;
有参数时,调用url_for()方法也要传入参数。
通过url_for()函数来构建URL从而在代码中拼URL的好处有两点:
将来如果修改了URL,但没有修改该URL对应的函数名,就可以直接通过url_for()函数来获取地址而不用手动替换所有对应的URL。
url_for()函数可以转义一些特殊字符和unicode字符串,这在有时候显得很有用。
进一步测试:
from flask import Flask,url_for
app = Flask(__name__)
@app.route('/')
def index():
print(url_for('article_list',aid=2))
print(url_for('notice'))
print(url_for('follow', fid=2,page=5))
return 'Hello World'
@app.route('/article/')
def article_list(aid):
return 'article %s' % aid
@app.route('/notice')
def notice():
return 'Notice is as follows'
@app.route('/follows/')
def follow(fid):
return 'Follower %s' % fid