首页 > 解决方案 > 在另一个函数中使用一个函数中的变量,用烧瓶

问题描述

我使用 Flask 制作网站。

@app.route('/consulta',methods=['POST'])
def consulta():
    if request.method=='POST': #Si se han enviado datos
        dia = request.form['dia'] #Obtenemos los datos del formulario
        videobeam = request.form['videobeam']
        tablero = request.form['tablero']
        hora = request.form['hora']
        aa = darHora(hora)

        a = aa[0] #<<<<<----- HERE IS PROBLEM
        b = aa[1] #<<<<<<- HERE IS PROBLEM


        cursor = db.connection.cursor()
        cursor.execute("SELECT * FROM salones WHERE {0}=1 AND videobeam = '{2}' AND tablero = '{1}' AND `{3}` = 1 AND `{4}` = 1".format(dia,videobeam,tablero,a,b)) 

        #Buscamos que coincidan con la base de datos, se pregunta por el dia de disponibilidad, si tiene videobeam y tablero
        data = cursor.fetchall() #Se obtiene en una lista
        cursor.close() #Se cierra la conexión
        return render_template('consulta.html', datos = data) #Se visualizará los resultados, y se pasa a data como parametro

我想在另一个函数中使用该函数中的变量“a”和“b”,因为它们来自用户在表单中的输入。问题是我不能“返回”它们,因为烧瓶只允许我返回该函数的 render_template。

任何想法 ?谢谢!!!

标签: pythonmysqlvariablesflaskglobal

解决方案


假设另一个函数是与不同端点关联的视图函数,您可以使用 Flask 会话简单地传递这些变量。例如:

from flask import session

@app.route('/consulta',methods=['POST'])
def consulta():
    if request.method=='POST': #Si se han enviado datos
        dia = request.form['dia'] #Obtenemos los datos del formulario
        videobeam = request.form['videobeam']
        tablero = request.form['tablero']
        hora = request.form['hora']
        aa = darHora(hora)

        session['a'] = aa[0] #<<<<<----- HERE IS PROBLEM
        session['b'] = aa[1] #<<<<<<- HERE IS PROBLEM
        ...

 @app.route('/something')
 def user_parameters():
    a = session.get('a')
    b = session.get('b')
    ...

推荐阅读