代码之家  ›  专栏  ›  技术社区  ›  irum zahra

在Flask中redirect()之后有没有方法从函数返回值?

  •  0
  • irum zahra  · 技术社区  · 5 年前

    在这里,我分享了一个我试图实现的示例代码。

    my_bluprint = Blueprint('index',
                       __name__,
                       template_folder=template_dir)
    
    @my_bluprint.route('/print', methods=['GET', 'POST'])
    def my_function_2():
        print('i was redirected')
        if request.method == 'POST':
            age = request.form.get('age')
            print('AGE: ', age)
    
        return render_template("form2.html")
    
    @my_bluprint.route('/test', methods=['GET', 'POST'])
    def my_function():
        if request.method == 'POST':
            print('my_function')
            # do something
            name = request.form.get('name')
            print('my_name', name)
            if name == 'root':
                print('name is ', name)
                return redirect(url_for("index.my_function_2"))
            # age = request.form.get('age')
            print('AGE: ',age) # I need input age from my_function_2 here
            age_trans = my_module.ageMul(age)
            print('TransAGE: ', age_trans)
            return render_template("result.html", result=age_trans)
        return render_template("form1.html")
    

    在运行时,我的程序将使用来自一个模板的输入来决定下一个重定向哪个模板。我尝试用我在示例代码中使用的方式来呈现模板,但是我需要来自以前模板的输入,以便进一步处理,并结合所有其他呈现的模板的输入。 编辑
    我可以重定向到代码中的其他路径。但是我需要输入我正在使用的模板 my_function_2() 在里面 my_function() 在执行 . 这意味着我需要回到主路线i-e /test 数据来自 my_function_2
    另一个主意
    我的函数() 我的函数() ? 这样我就只能有一条路线渲染多个模板?但是我想保留之前呈现的所有模板的数据

    这样做的好方法是什么?

    我试过了

    @my_bluprint.route('/test', methods=['GET', 'POST'])
    def my_function():
        if request.method == 'POST':
            #name = request.form.get('name')
            session['name'] = request.form['name']
            print('my_name', session['name'])
            if session['name'] == 'root':
                print('name is ', session['name'])
                #return redirect(url_for("index.my_function_2"))
                return render_template("form2.html")
            age = request.form.get('age')
            print('AGE ',age)
            age_trans = my_module.ageMul(age)
            print('TransAGE: ', age_trans)
            print(session['name'])
            return render_template("result.html", result=age_trans)
        return render_template("form1.html")
    


    return render_template("form2.html") if request.method == 'POST': 从一开始就执行它,在这里给我错误 session['name'] = request.form['name'] 但我希望程序控件总是向前移动,它在第一次运行时得到的值 render_template("form1.html")

    0 回复  |  直到 5 年前
        1
  •  -1
  •   zgoda    5 年前

    您可以在redirect中的query param中传递它或将其存储在session中。