flask——路由跳转
一、url_for函数用法
1-1 路由生成 使用url_for(视图函数名)即可返回对应视图函数的url
from flask import Flask, url_for #创建Flask应用程序实例 app = Flask(__name__) @app.route("/helloworld") def hello(): return url_for("hello") #运行应用程序 if __name__== "__main__": app.run(debug=True, port=5001)
1-2 蓝图路由生成 使用url_for("蓝图名.视图函数名")即可返回对应视图函数的url
from flask import Flask, Blueprint, url_for #创建Flask应用程序实例 app = Flask(__name__) login_api = Blueprint("login", __name__, url_prefix="/login") index_api = Blueprint("first_page", __name__, url_prefix="/index") @login_api.route("") def login(): print("登录,成功后跳转到首页") return url_for("first_page.index") @index_api.route("") def index(): print("首页") return{"code":0, "msg": "success"} if __name__ == "__main__": app.register_blueprint(index_api) app.register_blueprint(login_api) app.run(debug=True, port=5001)
二、重定向
语法:
flask.redirect(location, code=302, Response=None)
location是一个链接地址: 可以使用 url_for()函数得到,也可以是静态文件地址。
code HTTP协议中的一个状态码。
Response 是一个响应类。
用法:
用法一: redirect(url地址)
用法二: redirect(路由地址)(可以结合url_for使用)
login_api = Blueprint("login", __name__, url_prefix="/login") index_api = Blueprint("first_page", __name__, url_prefix="/index") @login_api.route("") def login(): print("登录,成功后跳转到首页") # return url_for("first_page.index") # 跳转到首页路由,执行对应的视图函数 return redirect(url_for("first_page.index")) @index_api.route("") def index(): print("首页") return{"code":0, "msg": "success"}
三、跨域概念:当一个请求URL的协议、域名、端口三者之间的任意一个与当前页面URL不同即为跨域。
安装flask-cors: pip install flask-cors
解决跨域问题分为两种
1) 针对全局所有的APICORS(app)
2) 针对特定的API@cross_origin
1 #后端服务代码 2 from flask import Flask, render_template 3 from flask_cors import CORS 4 5 app = Flask(__name__) 6 #第一种:全局解决跨域问题 7 CORS(app, supports_credentials=True) 8 9 @app.route('/hello') 10 def hello(): 11 return "hello world" 12 13 14 #第二种:局部解决跨域问题 15 # @cross_origin(supports_credentials=True) 16 @app.route('/cors') 17 def cors(): 18 return render_template('cors.html') 19 20 if __name__== '__main__': 21 app.run(debug=True,port=5001)