wtforms 简介

WTForms是一个支持多个web框架的form组件,主要用于对用户请求数据进行验证。

安装:pip3 install wtforms


WTforms作用:当网站中需要用到表单时,WTForms变得很有效。应该把表单定义为类,作为单独的一个模块。

表单类:

class wtforms.form.Form:

创建表单:

创建表单时,通常是创建一个Form的子类,表单的中的字段作为类的属性,如:

from wtforms import Form, BooleanField, TextField,PasswordField,validators
class RegistrationForm(Form):
    username = TextField('Username', [validators.Length(min=4, max=25)])
    email = TextField('Email Address', [validators.Length(min=6, max=35)])
    password = PasswordField('New Password', [
        validators.Required(),
        validators.EqualTo('confirm'message='Passwords must match')
    ])
    confirm = PasswordField('Repeat Password')
    accept_tos = BooleanField('I accept the TOS', [validators.Required()])

需要注意的是:

1、字段名是区分大小写的

2、字段名不能以'_'开头

3、字段名不能以'validate'开头

Form的主要属性:

data:字典类型,包括每一个字段的数据。如果需要频繁访问字段值,可以使用form.<field>.data进行访问

errors:字典类型,包括每一个字段的错误信息。

字段的主要类型有:

BooleanField,DateField,DateTimeField,DecimalField,FileField,FloatField,FormField,HiddenField,IntegerField,PasswordField,RadioField,SelectField,SelectMultipleField,StringField,SubmitField,TextAreaField,TextField.

如何使用Form:

在视图函数中,表单用法示例如下:

@app.route('/register', methods=['GET', 'POST'])
def register():
    form = RegistrationForm(request.form)
    if request.method == 'POST' and form.validate():
        user = User(form.username.data, form.email.data,
                    form.password.data)
        db_session.add(user)
        flash('Thanks for registering')
        return redirect(url_for('login'))
    return render_template('register.html', form=form)

模版中的表单:

以下是一个使用宏的示例_formhelpers.html模板:

{% macro render_field(field) %}
  <dt>{{ field.label }}
  <dd>{{ field(**kwargs)|safe }}
  {% if field.errors %}
    <ul class=errors>
    {% for error in field.errors %}
      <li>{{ error }}</li>
    {% endfor %}
    </ul>
  {% endif %}
  </dd>{% endmacro %}

以下是使用了上面的_formhelpers.htmlregister.html模板:

{% from "_formhelpers.html" import render_field %}
<form method=post action="/register">
  <dl>
    {{ render_field(form.username) }}
    {{ render_field(form.email) }}
    {{ render_field(form.password) }}
    {{ render_field(form.confirm) }}
    {{ render_field(form.accept_tos) }}
  </dl>
  <p><input type=submit value=Register></form>

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
wtforms_json是一个用于在Flask应用中将JSON数据转换为WTForms表单对象的扩展库。它允许我们使用复杂格式的JSON数据进行表单验证,并且可以方便地将JSON数据转换为WTForms表单对象。通过使用wtforms_json,我们可以在Flask应用中更方便地处理JSON数据,并进行表单验证。[1] 在引用[1]中的代码示例中,我们可以看到JsonForm类继承自WTForms的Form类,并使用wtforms_json.init()方法初始化wtforms_json扩展。然后,通过from_json()方法将请求中的JSON数据转换为表单对象,并进行表单验证。如果验证失败,将抛出ParameterException异常。如果验证成功,将返回验证通过的表单对象。这样,我们可以更方便地处理JSON数据并进行表单验证。[1] 引用[2]中提到,普通的wtforms库无法接受复杂格式的JSON数据,只能接受普通格式的JSON数据以及URL查询参数进行校验。而使用wtforms_json扩展可以解决这个问题,可以接受复杂格式的JSON数据进行表单验证。[2] 在引用[3]中的代码示例中,TeacherHandler类继承自BaseHandler类,通过post方法处理POST请求。在方法中,首先将请求体解码为UTF-8编码的字符串,并使用json.loads()方法将其转换为Python对象。然后,使用TeacherForm.from_json()方法将JSON数据转换为TeacherForm表单对象。接下来,通过调用validate()方法对表单对象进行验证。如果验证通过,将使用create()方法创建Teacher对象,并返回成功的响应。如果验证失败,将返回包含错误信息的响应。这样,我们可以使用wtforms_json扩展更方便地处理JSON数据并进行表单验证。[3] 总之,wtforms_json是一个用于在Flask应用中处理JSON数据并进行表单验证的扩展库,它可以方便地将JSON数据转换为WTForms表单对象,并进行表单验证。通过使用wtforms_json,我们可以更方便地处理复杂格式的JSON数据,并进行表单验证。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值