跳过Python-flask-flash消息(不显示),Web服务器立即返回响应
一般来说,我对Python flask和Web服务器概念非常陌生,但我已经成功地创建了一个简单的Web应用程序 它基本上由一个带有表单的主页和一个提交按钮组成,该按钮在以下情况下返回一条闪烁消息:1)所有字段都正确填写,2)并非所有字段都已填写 我的代码如下所示:跳过Python-flask-flash消息(不显示),Web服务器立即返回响应,python,flask,Python,Flask,一般来说,我对Python flask和Web服务器概念非常陌生,但我已经成功地创建了一个简单的Web应用程序 它基本上由一个带有表单的主页和一个提交按钮组成,该按钮在以下情况下返回一条闪烁消息:1)所有字段都正确填写,2)并非所有字段都已填写 我的代码如下所示: @app.route('/', methods = ['GET', 'POST']) def home(): form = preference_form(request.form) print(form.error
@app.route('/', methods = ['GET', 'POST'])
def home():
form = preference_form(request.form)
print(form.errors)
if request.method == 'POST':
name = request.form['name']
age = request.form['age']
address = request.form['distance']
date = request.form['date']
if form.validate():
flash('All good!')
else:
flash('Oops! All details are required to provide accurate results!')
return render_template('home.html', form = form)
@app.route('/results', methods = ['POST'])
def return_results():
name = request.form.get('name')
age = request.form.get('age')
address = request.form.get('address')
result = function_a(name=name,
age=age,
address=address)
return result
flash消息按预期工作,但在我添加了返回结果()
路径后,在填写表单(无论是完整的还是不完整的)后,我直接进入/results
你能告诉我我错过了什么吗
谢谢大家! 您应该在模板文件中呈现flash消息。在模板中添加以下代码段,以显示flash消息或布局模板文件:
{% with messages = get_flashed_messages() %}
{% if messages %}
<ul class=flashes>
{% for message in messages %}
<li>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
{% endwith %}
我的模板中有类似的东西。正如我在问题中提到的,在添加
return\u results()
函数之前,flash消息按预期返回,但不是在我添加该函数之后。您的return\u results
view函数没有刷新任何内容。您也没有在其中呈现模板文件。您是否建议将验证表单并返回flash消息的行放在home()
中的return\u results()
中?如果是这种情况,当然也需要将模板文件的呈现添加到return\u results()
中?这取决于应用程序的设计。如果我们可以在一个视图函数(端点)中完成信息收集,那么为什么需要第二个视图函数(/resutls
)。
@app.route('/', methods=["GET", "POST"]
def index():
form = PreferenceForm()
if request.method == "POST":
if form.validate_on_submit():
flash("success.")
result = func(age=form.age.data,
date=form.date.data,
name=form.name.data,
address=form.address.data)
return render_template("result.html", result=result)
else:
flash("failed!")
return render_template('home.html', form=form)