一、构造URL(url_for)
一般我们通过一个URL
就可以执行到某一个函数。如果反过来,我们知道一个函数,怎么去获得这个URL
呢?url_for函数
就可以帮我们实现这个功能。url_for()
函数接收两个及以上的参数,他接收函数名作为第一个参数,接收对应URL规则的命名参数,如果还出现其他的参数,则会添加到URL
的后面作为查询参数。
通过构建URL
的方式而选择直接在代码中拼URL
的原因有两点:
- 将来如果修改了
URL
,但没有修改该URL
对应的函数名,就不用到处去替换URL
了。 url_for()
函数会转义特殊字符和Unicode数据
,这些工作都不需要我们自己处理。
from flask import Flask,url_for # 已知路由访问函数 # 实例化app app = Flask(__name__) @app.route('/') def hello_world(): print(url_for('article_list',aid=1,page=1,name=1)) # 添加参数用&连接 return 'hello world' # url_for 通过一个页面跳转到另一个页面 通过url_for 获取网页的url @app.route('/article/<aid>') def article_list(aid): print(url_for('hello_world',next='/')) return 'articleList {}'.format(aid) if __name__ == '__main__': app.run(debug=True)
运行结果:
* Running on http://127.0.0.1:5000 Press CTRL+C to quit /article/1?page=1&name=1 127.0.0.1 - - [06/Oct/2022 18:24:01] "GET / HTTP/1.1" 200 - /?next=%2F 127.0.0.1 - - [06/Oct/2022 18:24:26] "GET /article/1 HTTP/1.1" 200 -
二、访问重定向
重定向分为永久性重定向和暂时性重定向,在页面上体现的操作就是浏览器会从一个页面自动跳转到另外一个页面。比如用户访问了一个需要权限的页面,但是该用户当前并没有登录,因此我们应该给他重定向到登录页面。
示例:
from flask import Flask ,url_for ,redirect,request app = Flask(__name__) @app.route('/login/',methods=['GET','POST']) def login(): return 'login page' @app.route('/profile/',methods=['GET','POST']) def profile(): name = request.values.get('name') if not name: # 如果没有name,说明没有登录,重定向到登录页面 return redirect(url_for('login')) else: return name if __name__ == '__main__': app.run(debug=True)
访问http://127.0.0.1:5000/profile/
运行结果:
访问url重定向到了/login/
标签:__,name,Flask,app,URL,url,重定向 From: https://www.cnblogs.com/xfbk/p/16758184.html