我无法访问框架中的所有按钮。它仅适用于直方图按钮。这是我想要在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>
这是我的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
我做错了什么?
答案 0 :(得分: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>
然后您的Python代码可以是:
if request.form.post['action'] == 'Download':
...
elif request.form.post['action'] == 'Histogram':
...
elif request.form.post['action'] == 'Search':
...
else:
... // Report bad parameter
答案 1 :(得分:0)
尽管对不同的提交使用相同的名称可以起作用(如上一个答案中所建议),但对于i18n来说却不那么方便。
您仍然可以使用其他名称,但是您应该检查使用不同的名称:
if 'Download' in request.form:
...
elif 'Histogram' in request.form:
...
elif 'Search' in request.form:
...
else:
... // Report bad parameter