WTForms模块

WTForms是一个Python库,用于处理Web应用的表单。Forms是核心,包含多个Fields,每个Field对应特定数据类型。Validators进行数据验证,Widgets负责HTML渲染,而CSRF保护防止跨站请求伪造攻击。基本使用包括创建表单类,实例化并渲染到模板中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下载安装

pip install WTForms

主要概念

  • Forms:Forms类是WTForms的核心容器。表单(Forms)表示域(Fields)的集合,域能通过表单的字典形式或者属性形式访问。
  • Fields:Fields(域)做最繁重的工作。每个域(Field)代表一个数据类型,并且域操作强制表单输入为响应的数据类型。例如,InputRequiredStringField表示两种不同的数据类型。域除了包含的数据之外,还包含大量有用的属性,例如标签、描述、验证错误的列表。
  • Validators:Validators(验证器)只是接受输入,验证它是否满足某些条件,比如字符串的最大长度,然后返回。或者,如果验证失败,则引发ValidationError。这个系统非常简单和灵活,允许在字段上链接任意数量的验证器。
  • Widget:Widget(组件)的工作是渲染域(field)的HTML表示。每个域可以指定Widget实例,但每个域默认拥有一个合理的Widget。
  • CSRF:CSRF(Cross-site reqest forgery)跨站请求伪造。也被称为one-click attack或者session riding,通常缩写为CSRF或者XSRF,是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。跟跨网站脚本(XSS)相比,XSS利用的是用户对指定网站的信任,CSRF利用的是网站对用户网页浏览器的信任。

基本使用

(1)创建表单类。

from wtforms import Form, BooleanField, StringField, validators

class RegisterForm(Form):
    username = StringField('Username', [validators.Length(min=4, max=25)])
    email = SringField('Email Address', [validators.Length(min=6, max=35)])
    accept_rules = BooleanField('I accept the site rules', [validators.InputRequired()])

(2)实例化表单类。

@app.route('/register', methods=['GET', 'POST'])
def register():
    form = RegisterForm(request.form)  # 实例化表单类
    if request.method = 'POST' and form.validate():  # 如果提交表单,并字段验证通过
        # 获取字段内容
        email = from.email.data
        username = from.username.data
        accept_rules = from.accept.data
        # 省略其余代码

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

(3)模板中渲染域。

<form method="POST" action="/login">
    <div>{{ form.email.label }}:{{ form.email() }}</div>
    <div>{{ form.username.label }}:{{ form.username() }}</div>
    <div>{{ form.accept_rules.label }}:{{ form.accept_rules() }}</div>
</form>

上述代码中,使用form.username.label来获取RegisterForm类的username的名称,使用form.username来获取表单中的username域信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值