WTForms介绍
WTForms介绍
指尖跳动的精灵 发表于3年前
WTForms介绍
  • 发表于 3年前
  • 阅读 1285
  • 收藏 0
  • 点赞 0
  • 评论 2

新睿云服务器60天免费使用,快来体验!>>>   

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>


  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 15
博文 85
码字总数 48459
评论 (2)
知之为知之
请教模版宏是什么意思,什么情况下会使用到,谢谢
指尖跳动的精灵

引用来自“知之为知之”的评论

请教模版宏是什么意思,什么情况下会使用到,谢谢
模版宏就相当于是函数
×
指尖跳动的精灵
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: