Python控制流(识别同一应用程序路由中的不同POST方法-Flask)

Python控制流(识别同一应用程序路由中的不同POST方法-Flask),python,python-3.x,flask,Python,Python 3.x,Flask,我在烧瓶里。我在一个html页面上有两个表单,两个表单都有相同的post方法。我已经读到,可以使用控制流来识别在同一应用程序路径下发布的表单。我似乎在与这里的逻辑作斗争。到目前为止,我有以下资料: @app.route('/page-with-2-forms, methods=['GET', 'POST']) def function(): if request.method == "POST": if 'form_1_element_name'

我在烧瓶里。我在一个html页面上有两个表单,两个表单都有相同的post方法。我已经读到,可以使用控制流来识别在同一应用程序路径下发布的表单。我似乎在与这里的逻辑作斗争。到目前为止,我有以下资料:

@app.route('/page-with-2-forms, methods=['GET', 'POST'])
def function():

    if request.method == "POST":

        if 'form_1_element_name' in request.form: 
        
            #form1
            #request args from this form and do some stuff
        
        #form2
        else:
            #request args from this form and do some stuff
    
    return render_template('page.html')
这里的问题是,当试图发布#form1时,它仍然试图执行#form2的块(else语句)。然而,在发布#form2时,一切正常。正如我所说,我似乎缺少一些逻辑

元素名称标记发布在html标记下<代码>

请注意,我知道传统的做法是使用WTForms,但我不想在这里使用它


任何帮助都将不胜感激。

将发布解决方案,仅供将来参考和有类似问题的人使用。在最初的文章中,
if语句
引用了表单名称,如html代码片段中所述

<form id="form_1_element_name" name="form_1_element_name" action="page-with-2-forms" method="POST">
这是WTForms的一个很好的替代方案


感谢@go2nirvana的帮助

您能添加
请求.表单
的值吗?@go2nirvana
请求.表单
调用表单的名称,该名称位于
标签中,如上所述。你认为这可能是问题所在吗?也许更愿意在表单的主体中放置一个隐藏的元素?我想检查的是你的条件是否真的起作用<代码>如果是实心结构,如果它“为假”-这是因为条件为假。所以在
请求中可能实际上没有
'form\u 1\u element\u name'
。form
@go2nirvana刚刚解决了这个问题,谢谢。从技术上讲,你是对的。将表单的名称作为元素引用不起作用。您需要引用表单中的一个元素,因此我引用了表单中提交按钮的名称,效果非常好
@app.route('/page-with-2-forms, methods=['GET', 'POST'])
def function():

    if request.method == "POST":

        if 'editFormSubmitButton' in request.form: 
        
            #form1
            #request args from this form and do some stuff
        
        #form2
        else:
            #request args from this form and do some stuff
    
    return render_template('page.html')