Estoy usando Flask para hacer una aplicación de reserva de boletos. Pero por ahora estoy un poco confundido sobre cómo enviar datos de una página a otra página, como este fragmento de código:
@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') La variable de date es una solicitud de un formulario y, por ahora, quiero enviar los datos de la date a la función de booking . ¿Cuál es el término para ese propósito ..?
Es posible pasar datos para get una solicitud de una ruta a otra.
Ya casi llega para obtener el valor de la date de envío en la ruta de 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>Producción:
Ruta de inicio con un formulario para enviar la fecha
Obtener la fecha en la ruta de reserva
Desventajas:
date ) se pasan como parámetros de URL de una ruta a otra.booking de ruta).Alternativas:
También puede usar la sesión de matraz para enviar datos de una página a otra página.
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)