【问题标题】:How do I in Flask get what of two buttons in same form has been clicked to perform different actions?我如何在 Flask 中获取相同表单中的两个按钮中的哪一个被单击以执行不同的操作?
【发布时间】:2021-08-26 22:18:42
【问题描述】:

我有一个输入字段,我不希望有 2 个具有不同操作的按钮。

    <!-- Search box -->    
    <input type="text" class="form-control mb-2 mr-sm-2" placeholder="UserID" name="search"
           aria-describedby="useridHelp" required pattern="[0-9]{5,7}">
    <!-- Submit/Update button -->
    <button id="add-update" type="button" class="btn btn-primary mb-2 mr-2">Add/Update</button>
    <!-- Remove button -->
    <button id="remove" type="button" class="btn btn-primary mb-2">Remove</button>

如果我将“添加更新”按钮设置为type="submit" 并在 Flask 中使用if request.method == 'POST':,那么我提交该字段的值。太好了。

但是如何将“删除”按钮调用到 Flask 中以便给它一个功能?

换句话说。当用户单击“添加/更新按钮”时,字段输入应添加到我的数据库中。当用户单击“删除”按钮时,应从我的数据库中删除字段输入。

如何在 Flask 中获取点击了哪个按钮?


我在这里找到了解决方案:https://predictivehacks.com/?all-tips=how-to-add-action-buttons-in-flask

答案是:

if request.form.get('action1') == 'VALUE1':

例子是:

from flask import Flask, render_template, request
app = Flask(__name__)
@app.route("/", methods=['GET', 'POST'])
def index():
    if request.method == 'POST':
        if request.form.get('action1') == 'VALUE1':
            pass # do something
        elif  request.form.get('action2') == 'VALUE2':
            pass # do something else
        else:
            pass # unknown
    elif request.method == 'GET':
        return render_template('index.html', form=form)
    
    return render_template("index.html")
<h3>Our Flask Buttons<h3/>
    <form method="post" action="/">
        <input type="submit" value="VALUE1" name="action1"/>
        <input type="submit" value="VALUE2" name="action2" />
    </form>

【问题讨论】:

    标签: python html python-3.x flask


    【解决方案1】:

    HTML 更改:

    您可以有一个表单,其中包含一个文本框和两个按钮。按钮名称相同(two_buttons)并且会有不同的值(add-updateremove,这将在烧瓶中用于识别它们。

    two_button_add_and_remove.html

    <form action="{{ url_for('check_button')}}" method="POST">
            <!-- Search box -->
        <input type="text" class="form-control mb-2 mr-sm-2" placeholder="UserID" name="search"
               aria-describedby="useridHelp" required pattern="[0-9]{5,7}">
    
          <!-- Submit/Update button -->
        <button name="two_buttons" value="add-update" id="add-update" type="submit" class="btn btn-primary mb-2 mr-2">Add/Update</button>
        <!-- Remove button -->
        <button name="two_buttons" value="remove" id="remove" type="submit" class="btn btn-primary mb-2">Remove</button>
    </form>
    

    现在在 Flask 中,检查 request.form['two_buttons'] 的值,并根据它调用带有参数 request.form['search'] 的添加或删除函数

    from flask import Flask, render_template, request
    app = Flask(__name__)
    
    
    @app.route('/check_button', methods=['GET','POST'])
    def check_button():
        print("Request.method:", request.method)
        try:
            if request.form['two_buttons'] == "add-update": # check if value is "add-update"
                print(f"call add-update_function with {request.form['search']}")
            else:
                print(f"call remove_function with {request.form['search']}")
            return render_template('two_button_add_and_remove.html')
        except Exception as e:
            return render_template('two_button_add_and_remove.html')
    
    if __name__ == '__main__':
        app.run(debug=True)
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-05
      • 1970-01-01
      • 2014-11-07
      • 1970-01-01
      • 2023-02-10
      • 2013-06-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多