如何使用FlaskApp将表单数据从一个页面传递到另一个页面

时间:2016-08-18 05:09:20

标签: python-2.7 flask flask-wtforms flask-appbuilder

我有一个表单“form.html”,用户可以填写他的信息,如姓名,地址,手机号码和图片。我有三个html页面“info.html”,“success.html”和“failure.html”

我要求用户付款,以便info.html显示用户填写的信息,之后如果付款成功,他将付款,用户将被重定向到“success.html”,如果付款失败,用户将被重定向到“failure.html”

所有三个页面都相同,只有一行不同,即付款状态为“待定”或“成功”

我可以将用户填写的信息打印到“info.html”,但我想在success.html或failure.html上打印相同的信息(如果需要)。

routes.py:

@app.route('/form', methods=['GET', 'POST'])
def form():
  global onlineAppForm, data
  onlineAppForm = RegForm()
  name = request.form['name'].strip()
  father = request.form['father_name'].strip()  
  mother = request.form['mother_name'].strip()
  address1 = request.form['txtAddress1'].strip()
  data = {'name' : name, 'father' : father, 'mother' : mother, 'address1' : address1}
  return render_template("apply1.html", data=data, form=onlineAppForm)

我试图这样做,但当然不行。那我该怎么做呢

@app.route('/success')
def success():
  return render_template('success.html', data=data, form=onlineAppForm)

1 个答案:

答案 0 :(得分:0)

您将不得不使用SQLAlchemy设置数据库并创建模型。表单只是收集创建模型所需的数据。以下是这些步骤的演练。

  1. 表单已提交至端点
  2. 创建Model的实例并使用表单数据加载
  3. 保存到数据库并重定向到成功页面(传递对象的标识符)
  4. 查询成功路线上的对象并传递给模板进行渲染
  5. 我写了一个我相信涵盖你需要的例子。不想写模板,但我相信它应该有用。

    http://hastebin.com/puputugune.py

    还要检查https://flask-wtf.readthedocs.io/en/latest/以获取更多帮助

    修改

    在模板上,您可以像在视图中一样访问模型属性。

    <!-- success.html -->
    <ul>
        <li>{{ person.id }}</li>
        <li>{{ person.first_name }}</li>
        <li>{{ person.last_name }}</li>
        <li>{{ person.email }}</li>
    </ul>