我是编程新手。我有兴趣开发一个带有两个输入值和两个提交按钮的简单网络应用程序。数字 A 和 B 由用户输入,根据按下的按钮,将显示乘积或总和。当我使用一个按钮时,代码就可以工作;但是,我似乎不知道如何使这两个按钮都起作用。我用 Flask 和 Python 3.8 编写了该应用程序并使用了 wtforms。
这是我的代码: 查看.html
<table>
{% for field in form %}
<tr>
<td>{{ field.name }}</td><td>{{ field }}</td>
<td>{{ field.label }}</td>
</tr>
{% endfor %}
</table>
<form method="post" action="">
<input type="submit" name="btn" value="Add">
</form>
<p>
<form method="post" action="">
<input type="submit" name="btn" value="Multiply">
</form></p>
<p>
{% if result != None %}
{{result}}
{% endif %}
</p>
Python代码 View .py
@app.route("/comp", methods=['GET', 'POST'])
def comp():
form = InputForm(request.form)
if request.method == 'POST' and form.validate():
if request.form["btn"] == "Add":
result = add(form.A.data, form.B.data)
elif request.form["btn"] == "Multiply":
result = mul(form.A.data, form.B.data)
else: result = None
return render_template('view.html', form=form, result=result)
我在一个单独的文件中定义了 mul() 和 add() 函数,因为我计划在将来进一步扩展该应用程序。这是函数定义:
def mul(A,B):
return A*B
def add(A,B):
return A+B
我的input.py文件:
from wtforms import Form, FloatField, validators
class InputForm(Form):
A = FloatField(
label='A', default=0,
validators=[validators.InputRequired()])
B = FloatField(
label='B', default=0,
validators=[validators.InputRequired()])
最佳答案
您的值之一是“ADD”,但您测试的是“Add”。因此,相等测试失败
更新:
你在哪里定义add()
和mul()
?也许可以使用:
if request.form['btn'] == 'Add':
result = form.A.data + form.B.data
elif request.form['btn'] == 'Multiply':
result = form.A.data * form.B.data
更新2:
试试这个来诊断:
if request.method == 'POST' and form.validate():
print(request.form["btn"])
print(form.A.data, form.B.data)
print(request.POST)
关于python - 网络应用程序 : Flask - html - wtforms: form with two submit buttons,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63285818/