【问题标题】:How To Pass Form Data from One Page To Another using FlaskApp如何使用 FlaskApp 将表单数据从一个页面传递到另一个页面
【发布时间】:2016-12-24 22:09:36
【问题描述】:

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

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

三个页面都是一样的,只有一行不同,支付状态“pending”或“success”

我可以将用户填写的信息打印到“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)

【问题讨论】:

  • 有什么问题?
  • 请再次阅读问题,问题是我可以将用户信息打印到 info.html 页面,但我想将相同的信息传递到 success.html 页面。那我该怎么做呢
  • 通过post 调用具有相同用户信息的页面。您将信息存储在哪里?
  • M 将信息存储在“data”变量中。
  • 您需要将信息存储在某种数据库或其他东西中,因为每个案例都应该与其他案例分离。一旦您尝试填写信息。二是用户付款。第三,根据您渲染特定模板的成功或失败。首先,您如何确保没有id 付款的用户与names 匹配。您可以做的最后一件事是在每个请求或每个端点中传递 data

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


【解决方案1】:

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

  1. 表单提交到端点
  2. 创建模型实例并加载表单数据
  3. 保存到数据库并重定向到成功页面(传递对象的标识符)
  4. 成功路径上的查询对象并传递给模板进行渲染

我写了一个例子,我相信它可以满足你的需要。不想编写模板,但我相当有信心它应该可以工作。

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>

【讨论】:

  • 感谢兄弟的帮助,这真的帮助我理解了一些事情。
  • 没问题。查看 Miguel Grinberg 的 Flask Web Development。我就是这样学习烧瓶 blog.miguelgrinberg.com
  • 请注意,您不需要必要的 SQLAlchemy,但任何类型的持久数据存储就足够了,例如redis,一个文件,一些 webserve,......当然,SQLAlchemy 通常是一个很好的选择,尽管对于有很多用户的网页,我会推荐 postgresql 作为后端(它比 sqlite 更难设置)。
  • @syntonym 说的也是真的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-20
  • 1970-01-01
  • 2015-09-12
  • 1970-01-01
  • 2012-01-03
  • 2021-01-25
  • 2017-01-20
相关资源
最近更新 更多