Передача данных возможна для 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>
Выход:
Домашний маршрут с формой для отправки даты
Получение даты в маршруте бронирования
Недостатки:
- Значения (например,
date
) передаются как параметры URL от одного маршрута к другому.
- Любой, у кого есть запрос на получение, может получить доступ ко второй части (например,
booking
route).
Альтернативы:
- Используйте хранилище сеансов, как предложено @VillageMonkey.
- Используйте Ajax для облегчения многочастных форм.