问题描述
我已经实现了一个带有登录和注册路由的简单 Flask 应用程序,我想在用户名密码不匹配时闪现消息。这是我的索引和登录路径的一部分,
@app.route('/')
@login_required
def index():
return 'Hello World'
@app.route("/login",methods=["GET","POST"])
def login():
# Forget any user_id
session.clear()
if request.method == "POST":
# Ensure username was submitted
if not request.form.get("username"):
flash("Must provide username")
return redirect("/login")
#And so on...
if request.method == "GET":
render_template("login.html")
问题是当我提交带有空白输入的表单时,闪现消息没有出现。即便如此,具有相同代码的寄存器路由也没有任何错误地呈现闪存消息,
@app.route("/register","POST"])
def register():
if request.method == "POST":
# Ensure username was submitted
if not request.form.get("username"):
flash("Must provide username")
return redirect("/register")
#And so on...
if request.method == "GET":
render_template("register.html")
我在我的模板中包含了 Jinja 模板。有人可以指出为什么它仅在登录路径中不起作用吗?
解决方法
您的 LD_LIBRARY_PATH
函数会清除会话,即使 login
是 request.method
:
GET
因为 Flash 消息存储在会话中,所以在呈现登录表单时,消息已经被删除。
根据 session.clear()
其余部分的样子,您可能只想在 login
为 request.method
时清除会话。