Когда вы предоставляете ключевые аргументы для функции url_for
, Flask автоматически кодирует ваши значения в компоненты URI и добавляет их в URL вашего запроса.
Используя ваш код в качестве примера, выполните это
msg11='Saved Successfully'
return redirect(url_for('editProfile', msg11=msg11))
Будет выдан этот URL при передаче по маршруту editProfile
/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>