我正在尝试更新flask中的配置文件。一切正常,但是当我给出{{msg11}}时,一旦它编辑的msg不会显示在html页面中。我不知道如何传递参数,以便味精将显示在html页面中。我尝试了这种方法,但是它没有显示在html页面中
@app.route("/updateProfile", methods=["GET", "POST"])
def updateProfile():
if request.method == 'POST':
email = request.form['email']
firstName = request.form['firstName']
lastName = request.form['lastName']
with sqlite3.connect('database.db') as con:
try:
cur = con.cursor()
cur.execute('UPDATE users SET firstName = ?, lastName = ? WHERE email = ?', (firstName, lastName))
con.commit()
msg11 = "Saved Successfully"
except:
con.rollback()
msg11 = "Error occured"
con.close()
return redirect(url_for('editProfile', msg11=msg11))
添加editprofile功能。我已删除此函数中的sql查询
def editProfile():
if 'email' not in session:
return redirect(url_for('root'))
loggedIn, firstName, noOfItems = getLoginDetails()
profileData = cur.fetchone()
conn.close()
return render_template("editProfile.html", profileData=profileData, loggedIn=loggedIn, firstName=firstName, noOfItems=noOfItems)
答案 0 :(得分:0)
当您为url_for
函数提供关键字参数时,Flask会自动将您的值编码为URI组件,并将它们附加到您的请求网址中。
以您的代码为例,执行此操作
msg11='Saved Successfully'
return redirect(url_for('editProfile', msg11=msg11))
传递到editProfile
路由时将产生此URL
/editProfile?msg11=Saved+Successfully
您可以使用Flask内置的request
对象轻松提取该值
from flask import request
# Inside of editProfile() route
msg11 = request.args.get('msg11', None)
这样,您可以简单地检查该值是否存在(调用get()
与通常的Python约定相同,如果找不到该值,将返回None
)并通过连同您的HTML模板。
此外,使用Jinja的功能,您只能通过使用类似这样的方式显示消息,除非该消息不是None
值
{% if msg11 is not none %}
<h1>{{ msg11 }}</h1>
{% endif %}
下面是一个完整的最小示例
app.py
from flask import Flask, render_template, redirect, url_for, request
app = Flask(__name__)
@app.route("/updateProfile", methods=["GET", "POST"])
def updateProfile():
msg11 = "Saved Successfully"
return redirect(url_for("editProfile", msg11=msg11))
@app.route("/editProfile")
def editProfile():
msg11 = request.args.get("msg11")
return render_template("editProfile.html", msg11=msg11)
if __name__ == "__main__":
app.run()
templates/editProfile.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>editProfile</title>
</head>
<body>
{% if msg11 is not none %}
<h1>{{ msg11 }}</h1>
{% else %}
<h1>msg11 has a value of None</h1>
{% endif %}
</body>
</html>