wtforms

本文介绍了wtforms在Python中的应用,详细阐述了如何安装、使用它进行表单验证,包括预定义的验证器和自定义验证函数。此外,还讲解了如何自定义字段以满足复杂的数据验证需求。
摘要由CSDN通过智能技术生成

wtformsPython 的表单组件,用于表达数据的验证。

一、安装
pip3 install wtforms
二、组成

wtforms依照功能类别来说wtforms分别由以下几个类别:

  • Forms: 主要用于表单验证、字段定义、HTML生成,并把各种验证流程聚集在一起进行验证。
  • Fields: 主要负责渲染(生成HTML)和数据转换。
  • Validator:主要用于验证用户输入的数据的合法性。比如Length验证器可以用于验证输入数据的长度。
  • Widgets:html插件,允许使用者在字段中通过该字典自定义html小部件。
  • Meta:用于使用者自定义wtforms功能,例如csrf功能开启。
  • Extensions:丰富的扩展库,可以与其他框架结合使用,例如django
  • Flask 信号机制(signal
三、使用Forms进行表单验证

首先给出一个简单的示例程序,web 部分使用的是 Flask,换成 tornadoaiohttp 等都是一样的。

# coding=utf-8
from flask import Flask, request
from multidict import MultiDict
from wtforms import Form, StringField, validators, ValidationError


# 定义 app 实例
app = Flask(__name__)


# 表单验证类
class ActionForm(Form):
    action = StringField('action', [validators.DataRequired()])


@app.route("/test", methods=['POST'])
def action():
    post_data = request.json
    _form = ActionForm(MultiDict(post_data))
    
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、付费专栏及课程。

余额充值