在同一表格中使用许多提交按钮

And*_*eea 0 html python flask

我无法访问框架中的所有按钮.它仅适用于直方图按钮.这是我想要在Post方法中访问它的表单.

 <form id="package_form" action="" method="post">
      <div class="panel-body">
          <input type ="submit" name="Download" value="Download">
      </div>
      <div class="panel-body">
          <input type ="submit" name="Histogram" value="Histogram">
      </div>
      <div class="panel-body">
           <input type ="submit" name="Search" value="Search">
      </div>

 </form>
Run Code Online (Sandbox Code Playgroud)

这是我的python代码.

 if request.method == 'GET':
        return render_template("preview.html", link=link1)
    elif request.method == 'POST':
        if request.form['Histogram'] == 'Histogram':
            gray_img = cv2.imread(link2,cv2.IMREAD_GRAYSCALE)
            cv2.imshow('GoldenGate', gray_img)
            hist = cv2.calcHist([gray_img], [0], None, [256], [0, 256])
            plt.hist(gray_img.ravel(), 256, [0, 256])
            plt.xlabel('Pixel Intensity Values')
            plt.ylabel('Frequency')
            plt.title('Histogram for gray scale picture')
            plt.show()
            return render_template("preview.html", link=link1)

        elif request.form.get['Download'] == 'Download':
            response = make_response(link2)
            response.headers["Content-Disposition"] = "attachment; filename=link.txt"
            return response
        elif request.form.get['Search'] == 'Search':
            return link1
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

Bar*_*mar 8

它不会像你写的那样工作.只包含您发送的提交按钮request.form,如果您尝试使用其他按钮之一的名称,则会出现错误.

而不是给按钮不同的名称,使用相同的名称,但使用不同的值.

<form id="package_form" action="" method="post">
      <div class="panel-body">
          <input type ="submit" name="action" value="Download">
      </div>
      <div class="panel-body">
          <input type ="submit" name="action" value="Histogram">
      </div>
      <div class="panel-body">
          <input type ="submit" name="action" value="Search">
      </div>

 </form>
Run Code Online (Sandbox Code Playgroud)

那么你的Python代码可以是:

if request.form.post['action'] == 'Download':
    ...
elif request.form.post['action'] == 'Histogram':
    ...
elif request.form.post['action'] == 'Search':
    ...
else:
    ... // Report bad parameter
Run Code Online (Sandbox Code Playgroud)


avt*_*ton 5

尽管对不同的提交使用相同的名称可以工作(如上一个答案中所建议的那样),但对于 i18n 来说可能不太方便。

你仍然可以使用不同的名称,但你应该检查处理它们的不同:

if 'Download' in request.form:
    ...
elif 'Histogram' in request.form:
    ...
elif 'Search' in request.form:
    ...
else:
    ... // Report bad parameter
Run Code Online (Sandbox Code Playgroud)