python - 网络应用程序 : Flask - html - wtforms: form with two submit buttons

标签 python html flask web-applications wtforms

我是编程新手。我有兴趣开发一个带有两个输入值和两个提交按钮的简单网络应用程序。数字 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/

相关文章:

python - 修补 Python 中 CSV 文件中缺失的行

php - Zend 框架 2 单选按钮

javascript - 使用 jQuery 更改 HTML

javascript - jQuery 通过 ID 获取子值

python - 判断一个序列是否存在于 Pandas Series 中,并返回找到该序列的行

python - 如何使用 NumPy 沿每一行和每一列应用我自己的函数

python - 在 flask 中 : How to access app Logger within Blueprint

python - 如何在 jinja2 模板中显示日期时间字段? ( flask )

python - 如何解决在查找平均值时只能将 str (不是 "int")连接到 str 的问题?

flask - 如何使用 pytest-flask 将发布数据发送到 flask