Flask学习 三 web表单

web表单

pip install flask-wtf

实现csrf保护

app.config['SECRET_KEY']='hard to guess string' # 可以用来存储框架,扩展,程序等的配置变量
#支持的字段
StringField                 文本字段
TextAreaField               多行文本字段
PasswordField               密码文本字段
HiddenField                 隐藏文本字段
DateField                   文本字段,值为datetime.date格式
DateTimeField               文本字段,值为datetime.datetime格式
IntegerField                文本字段,值为整数
DecimalField                文本字段,值为decimal.Decimal
FloatField                  文本字段,值为浮点数
BooleanField                复选框
RadioField                  一组单选框
SelectField                 下拉列表
SelectMultipleField         下拉列表,可选择多个值
FileField                   文本上传字段
SubmitField                 表单提交
FormField                   把表单作为字段嵌入另一个表单
FieldList                   一组指定类型的字段

 

#验证函数
Email             验证电子邮件地址
EqualTo           比较两字段值,常用于要求输入两次密码确认
IPAddress         验证IPv4网络地址
Length            验证输入字符串长度
NumberRange       验证输入的值在数字范围内
Optional          无输入值时跳过其他验证函数
Required          确保字段中的数据
Regexp            使用正则表达式验证输入值
URL               验证URL
AnyOf             确保输入值在可选值列表中
NoneOf            确保输入值不在可选值列表中
# app.py
from
flask_wtf import FlaskForm from wtforms import StringField,SubmitField from wtforms.validators import DataRequired app.config['SECRET_KEY']='hard to guess string' # 可以用来存储框架,扩展,程序等的配置变量 class NameForm(FlaskForm): name = StringField('姓名',validators=[DataRequired()]) submit = SubmitField('提交') @app.route ('/',methods=['get','post']) def index1(): name=None form=NameForm() if form.validate_on_submit(): name=form.name.data form.name.data='' return render_template('index.html',name=name,form=form,current_time = datetime.utcnow())
# if
<h1>Hello,{% if name %}{{ name }}{% else %}Stranger{% endif %}!</h1>
# 利用bootstrap form渲染表单 {{ wtf.quick_form(form) }}

 重定向,会话,flash消息

from flask import Flask, render_template,session,redirect,url_for,flash
from flask_bootstrap import Bootstrap
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired

app = Flask(__name__)
app.config['SECRET_KEY'] = 'hard to guess string'  # 可以用来存储框架,扩展,程序等的配置变量


class NameForm(FlaskForm):
    name = StringField('姓名', validators=[DataRequired()])
    submit = SubmitField('提交')


bootstrap = Bootstrap(app)
moment = Moment(app)


@app.route('/', methods=['get', 'post'])
def index1():
    name = None
    form = NameForm()
    if form.validate_on_submit():
        old_name = session.get('name')
        if old_name is not None and old_name != form.name.data:
            flash('看来你改变了名字')
        session['name']=form.name.data
        return redirect(url_for('index1'))
    return render_template('index.html', name=session.get('name'), form=form, current_time=datetime.utcnow())

if __name__ == '__main__':
    app.run(debug=True)
app
{% for message in get_flashed_messages() %}
    <div class="alert alert-warning">
        <button type="button" class="close" data-dismiss="alert">&times;</button>
        {{ message }}
    </div>
    {% endfor %}
base.html增加
{{ wtf.quick_form(form) }}
index

 

转载于:https://www.cnblogs.com/Erick-L/p/6875066.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值