Используйте переменную из функции в другой функции с колбой - PullRequest
0 голосов
/ 13 октября 2019

Я использую 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 для этой функции.

Есть идеи? Спасибо !!!

Ответы [ 2 ]

1 голос
/ 13 октября 2019

Предполагая, что другая функция является функцией представления, связанной с другой конечной точкой, вы можете просто передать эти переменные, используя сеанс 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')
    ...
0 голосов
/ 13 октября 2019

Один из способов справиться с этим - сделать глобальные переменные a и b:

a = None
b = None

@app.route('/consulta',methods=['POST'])
def consulta():
    if request.method=='POST': #Si se han enviado datos
        ...
        global a, b
        a, b = aa[0], aa[1]
        ...

Теперь, когда каждый раз вызывается consulta(), глобальные значения a и b заменены на новые. В другом месте программы вы можете сделать то же самое, чтобы получить самые последние установленные значения a и b.


Обратите внимание, что если вы столкнулись с этой проблемой,Возможно, вы захотите пересмотреть , почему вам нужны значения a и b, чтобы действовать так. Они привязаны к конкретному пользователю, который отправил запрос POST? Как вы используете их в другой функции, и когда другая функция запускается относительно этой?

Если вам нужно получить доступ к одной и той же информации между различными отключенными вызовами API, но у вас есть способ (такой кактокен), чтобы отслеживать, какой пользователь делает запрос, я бы порекомендовал использовать фактическую базу данных для хранения информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...