如何将Flask中的数据发送到另一个页面?

时间:2019-04-01 03:02:30

标签: python flask

我正在使用烧瓶制作门票预订应用。但是目前,我对如何将数据从一页发送到另一页几乎没有什么困惑,例如以下代码片段:

@app.route('/index', methods = ['GET', 'POST'])
def index():
    if request.method == 'GET':
        date = request.form['date']
        return redirect(url_for('main.booking', date=date))
    return render_template('main/index.html')


@app.route('/booking')
def booking():
    return render_template('main/booking.html')

date 变量是来自表单的请求,现在我想将 date 数据发送到{{1} }函数。

1 个答案:

答案 0 :(得分:1)

对于get请求从一条路径到另一条路径的传递数据是可能的。

您几乎可以在date路由中获取提交的booking值。

app.py

from flask import Flask, render_template, request, jsonify, url_for, redirect

app = Flask(__name__)

@app.route('/', methods = ['GET', 'POST'])
def index():
    if request.method == 'POST':
        date = request.form.get('date')
        return redirect(url_for('booking', date=date))
    return render_template('main/index.html')


@app.route('/booking')
def booking():
    date = request.args.get('date', None)
    return render_template('main/booking.html', date=date)    

if __name__ == '__main__':
    app.run(debug=True)

main/index.html

<html>
  <head></head>
  <body>
    <h3>Home page</h3>
    <form action="/" method="post">
      <label for="date">Date: </label>
      <input type="date" id="date" name="date">
      <input type="submit" value="Submit">
    </form>
  </body>
</html>

main/booking.html

<html>
  <head></head>
  <body>
    <h3>Booking page</h3>
    <p>
      Seleted date: {{ date }}
    </p>
  </body>
</html>

输出:

回程带有提交日期的表格

home route

获取预订路线中的日期

getting the date in booking route

缺点:

  • 这些值(例如:date)作为URL参数从一条路由传递到另一条路由。
  • 任何有获取请求的人都可以访问第二部分(例如booking路线)。

替代项:

  • 按照@VillageMonkey的建议使用会话存储。
  • 使用Ajax简化多部分表单。