zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    java第九周上机
    安卓-计算器
    安卓第四周作业
    第十五周作业
    第十三周作业
    第十三周上机作业
    第十二周作业
    第十二周上机作业
    第十一周作业
    第十一周上机作业
  • 原文地址:https://www.cnblogs.com/Erick-L/p/6875066.html
Copyright © 2011-2022 走看看