I'm using Flask to make a tickets booking app. But for now I'm little confused on how to send data from one page to another page, like this snippet of code:
@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')
The date
variable is a request from a form, and for now I want to send the date
data to booking
function. What is term for that purpose..?
Passing data is possible for get
request from one route to another.
You are almost there to get the submitted date
value in booking
route.
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>
Output:
Home route with a form to submit the date
Getting the date in booking route
Disadvantages:
date
) are passed as URL parameters from one route to another.booking
route).Alternatives:
You can also use flask session to send data from one page to another page.
from flask import Flask, render_template, request, jsonify, url_for, redirect,
session
app = Flask(__name__)
@app.route('/', methods = ['GET', 'POST'])
def index():
if request.method == 'POST':
date = request.form.get('date')
session["date"] = date
return redirect(url_for('booking', date=date))
return render_template('main/index.html')
@app.route('/booking')
def booking():
date = session.get("date")
return render_template('main/booking.html', date=date)
if __name__ == '__main__':
app.run(debug=True)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With