Supongamos que tengo el siguiente caso;
@app.route('/a', methods=['GET']) def a(): a = numpy.ones([10,10]) ... return render_template(...) # this rendered page has a link to /b @app.route('/b', methods=['GET']) def b(): print a ....
En la página rediseñada hay un enlace que dirige la página / aa / b. Intento pasar la variable a a page / b para reutilizarla. ¿Cómo debo hacer esta aplicación Flask? ¿Necesito usar la sesión o hay alguna otra solución?
Si desea pasar algún valor de Python que el usuario no necesita ver o tener control sobre, puede usar la sesión:
@app.route('/a') def a(): session['my_var'] = 'my_value' return redirect(url_for('b')) @app.route('/b') def b(): my_var = session.get('my_var', None) return my_var
La sesión se comporta como un dict y se serializa a JSON. Así que puedes poner cualquier cosa que sea JSON serializable en la sesión.
Debe evitar colocar grandes cantidades de datos en la sesión, ya que cada solicitud debe enviarse desde y hacia el cliente. Para grandes cantidades de datos, use una base de datos u otro almacenamiento de datos.
Si desea pasar un valor de una plantilla en una url, puede usar un parámetro de consulta:
Send my_value
producirá la url:
/b?my_var=my_value
que se puede leer desde b:
@app.route('/b') def b(): my_var = request.args.get('my_var', None)
El enlace para enrutar /b
en la plantilla para /a
podría tener parámetros de consulta agregados, que podría leer en la ruta para /b
. Alternativamente, podría almacenar el valor de a
variable de sesión para acceder a él entre las vistas.