¿Cómo pasar una variable entre páginas de matraz?

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.