在Flask中有两种方法可以重定向到URL。
例如,您希望在用户登录后将其重定向到另一个路由,等等。
你可能还想将用户重定向到期望一些变量示例的路由:@app.route('/post/<string:post_id>')
好吧,实现flask重定向案例# 1,它很简单,只需做:
from flask import Flask,redirect,render_template,url_for
app = Flask(__name__)
@app.route('/login')
def login():
# if user credentials are valid, redirect to user dashboard
if login == True:
return redirect(url_for(app.dashboard))
else:
print("Login failed !, invalid credentials")
return render_template('login.html',title="Home Page")
@app.route('/dashboard')
def dashboard():
return render_template('dashboard.html',title="Dashboard")
要实现案例#2的flask重定向,请执行以下操作
from flask import Flask,redirect,render_template,url_for
app = Flask(__name__)
@app.route('/home')
def home():
# do some logic, example get post id
if my_post_id:
# **Note:** post_id is the variable name in the open_post route
# We need to pass it as **post_id=my_post_id**
return redirect(url_for(app.open_post,post_id=my_post_id))
else:
print("Post you are looking for does not exist")
return render_template('index.html',title="Home Page")
@app.route('/post/<string:post_id>')
def open_post():
return render_template('readPost.html',title="Read Post")
同样的事情也可以在视图中完成
<a href="{{url_for(app.open_post,post_id=my_post_id)}}"></a>
请注意:重定向时总是使用app.home或app.something..(路由或视图函数名)而不是使用重定向("/home")。
原因是,如果您出于某种原因将路由示例从“/home”修改为“/index/page”,那么您的代码将会中断