在烧瓶中使用另一个函数中的一个变量

时间:2019-10-13 18:20:48

标签: python mysql variables flask global

我正在使用Flask制作网站。

   SELECT id, 'en'  
    FROM table
    GROUP BY id having count(distinct 
       langcode) >1

      union

      SELECT id, langcode
    FROM table
    GROUP BY id having count(distinct 
       langcode) =1

我想在另一个函数中使用该函数的变量“ a”和“ b”,以防它们来自用户以某种形式输入的内容。 问题是我无法“返回”它们,因为flask只允许我返回该函数的render_template。

有什么主意吗? 谢谢!!!

2 个答案:

答案 0 :(得分:1)

假设另一个函数是与另一个端点关联的视图函数,则可以使用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')
    ...

答案 1 :(得分:0)

一种解决方法是使ab全局变量:

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()时,ab的全局值将被新的替换。在程序的其他位置,您可以执行相同的操作以获取ab的最新设置值。


请注意,如果遇到此问题,则可能需要重新考虑为什么,您需要使用ab的值来执行此操作。它们是否与提交POST请求的特定用户绑定?您如何在其他功能中使用它们,以及相对于该功能何时运行?

如果您需要在各种断开连接的API调用之间访问相同的信息,但是您有一种方法(例如令牌)来跟踪哪个用户正在发出请求,则建议您使用实际的数据库来存储信息。