博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WTForms介绍
阅读量:6319 次
发布时间:2019-06-22

本文共 2174 字,大约阅读时间需要 7 分钟。

  hot3.png

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

表单类:

class wtforms.form.Form:

创建表单:

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

from wtforms import Form, BooleanField, TextField,PasswordField,validatorsclass 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) %}  
{
{ field.label }}  
{
{ field(**kwargs)|safe }}  {% if field.errors %}    
    {% for error in field.errors %}      
  • {
    { error }}
  •     {% endfor %}      {% endif %}  
    {% endmacro %}

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

    {% from "_formhelpers.html" import render_field %}
      
        {
    { render_field(form.username) }}    {
    { render_field(form.email) }}    {
    { render_field(form.password) }}    {
    { render_field(form.confirm) }}    {
    { render_field(form.accept_tos) }}  
      

    转载于:https://my.oschina.net/935572630/blog/375443

    你可能感兴趣的文章
    安装DNS Server linux 【转载】
    查看>>
    windows 与linux 下用C++读取sqlite实现文件复制(一)
    查看>>
    IOS 5 中为什么outlet 输出口总是设定成弱类型(weak)呢
    查看>>
    Read-Copy Update (RCU)
    查看>>
    基于centos系统,系统基本检查及巩固
    查看>>
    在以太坊上如何取消/修改已经提交的交易
    查看>>
    Android IOS WebRTC 音视频开发总结(十九)-- kurento
    查看>>
    reshape2 数据操作 数据融合( cast)
    查看>>
    第一章、关于SQL Server数据库的备份和还原(sp_addumpdevice、backup、Restore)
    查看>>
    八、主从复制
    查看>>
    深入理解RunLoop 整理资料
    查看>>
    俄罗斯方块
    查看>>
    LabVIEW将字符串转化为十进制
    查看>>
    欢迎光临
    查看>>
    20131205
    查看>>
    数组相减
    查看>>
    【poj 1962】Corporative Network(图论--带权并查集 模版题)
    查看>>
    使用AngularJS学习MVC的基础知识分享
    查看>>
    UDP template 代码
    查看>>
    爬虫 高性能
    查看>>