跳过Python-flask-flash消息(不显示),Web服务器立即返回响应

跳过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

一般来说,我对Python flask和Web服务器概念非常陌生,但我已经成功地创建了一个简单的Web应用程序

它基本上由一个带有表单的主页和一个提交按钮组成,该按钮在以下情况下返回一条闪烁消息:1)所有字段都正确填写,2)并非所有字段都已填写

我的代码如下所示:

@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)