Как отправить данные в Flask на другую страницу? - PullRequest
3 голосов
/ 01 апреля 2019

Я использую Настой , чтобы сделать приложение для бронирования билетов.Но сейчас я немного запутался в том, как отправлять данные с одной страницы на другую, как этот фрагмент кода:

@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 в функцию booking.Какой срок для этой цели ..?

1 Ответ

1 голос
/ 01 апреля 2019

Передача данных возможна для 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 route).

Альтернативы:

  • Используйте хранилище сеансов, как предложено @VillageMonkey.
  • Используйте Ajax для облегчения многочастных форм.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...