📜  如何检查在flask wtf中单击了哪个提交按钮 - Python(1)

📅  最后修改于: 2023-12-03 15:38:50.234000             🧑  作者: Mango

如何检查在flask wtf中单击了哪个提交按钮

在Flask中,我们可以使用WTForms来创建Web表单。使用WTForms的好处是,它可以提供表单验证,安全性,数据序列化,模板渲染等功能。在这篇文章中,我们将讨论如何检查在flask wtf中单击了哪个提交按钮。

创建表单

首先,我们需要定义一个表单类来创建表单。在这里,我们将创建一个注册表单,其中包含两个提交按钮:registercancel

from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField


class RegisterForm(FlaskForm):
    username = StringField('Username')
    email = StringField('Email')
    password = PasswordField('Password')
    confirm_password = PasswordField('Confirm Password')
    register = SubmitField('Register')
    cancel = SubmitField('Cancel')
视图函数

接下来,我们需要定义视图函数来处理表单。在这里,我们将使用request.methodif form.validate_on_submit():来检查表单的提交方式和表单的验证结果。如果提交方式是POST,并且表单验证成功,我们可以使用request.form.get('register')来检查哪个提交按钮被点击。

from flask import render_template, request
from app import app
from forms import RegisterForm


@app.route('/register', methods=['GET', 'POST'])
def register():
    form = RegisterForm()

    if request.method == 'POST' and form.validate_on_submit():
        if request.form.get('register'):
            # Register button clicked
            # Code to handle registration
            pass
        elif request.form.get('cancel'):
            # Cancel button clicked
            # Code to redirect to home page or login page
            pass

    return render_template('register.html', form=form)
模板

最后,我们需要在模板中呈现表单。我们可以使用WTForms中的form.hidden_tag()函数生成用于CSRF保护的隐藏字段,并使用form.register()form.cancel()来呈现提交按钮。

<form method="POST" action="/register">
    {{ form.hidden_tag() }}
    {{ form.username.label }} {{ form.username }}
    {{ form.email.label }} {{ form.email }}
    {{ form.password.label }} {{ form.password }}
    {{ form.confirm_password.label }} {{ form.confirm_password }}

    {{ form.register }}
    {{ form.cancel }}
</form>
总结

在这篇文章中,我们学习了如何检查在flask wtf中单击了哪个提交按钮。我们首先定义了一个表单类,然后定义了一个视图函数来处理表单。最后,在模板中呈现表单。