最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • Flask处理Web表单

    正文概述 流芳   2020-12-15   290

    Flask处理Web表单

    web表单是web应用程序的基本功能。

    它是HTML页面中负责数据采集的部件。表单有三个部分组成:表单标签、表单域、表单按钮。表单允许用户输入数据,负责HTML页面数据采集,通过表单将用户输入的数据提交给服务器。

    在Flask中,为了处理web表单,我们一般使用Flask-WTF扩展,它封装了WTForms,并且它有验证表单数据的功能。

    WTForms支持的HTML标准字段

    字段对象说明
    字段对象说明StringField文本字段TextAreaField多行文本字段PasswordField密码文本字段HiddenField隐藏文件字段DateField文本字段,值为 datetime.date 文本格式DateTimeField文本字段,值为 datetime.datetime 文本格式IntegerField文本字段,值为整数DecimalField文本字段,值为decimal.DecimalFloatField文本字段,值为浮点数BooleanField复选框,值为 True 和 FalseRadioField一组复选框SelectField下拉列表SelectMutipleField下拉列表可选择多个值FileField文件上传字段SubmitField表单提交按钮FormField把表单作为字段嵌入另一个表单FieldList一组指定类型的字段

    WTForms常用验证函数

    验证函数说明
    DateRequired确保字段中有数据EqualTo比较两个字段的值,常用于比较两次密码的输入Length验证输入的字符串长度NumberRange验证输入的值在数字范围内URL验证URLAnyOf验证输入值在可选列表中NoneOf验证输入值不在可选列表中

    使用 Flask-WTF 需要配置参数 SECRET_KEY
    CSRF_ENABLED是为了CSRF(跨站请求伪造)保护。 SECRET_KEY用来生成加密令牌,当CSRF激活的时候,该设置会根据设置的密匙生成加密令牌。在HTML页面中直接写form表单:

    <form method='post'>
        <input type="text" name="username" placeholder='Username'>
        <input type="password" name="password" placeholder='password'>
        <input type="submit">
    </form>12345

    视图函数中获取表单数据:

    from flask import Flask,render_template,request
    
    @app.route('/login',methods=['GET','POST'])
    def login():
        if request.method == 'POST':
            username = request.form['username']
            password = request.form['password']
            print username,password
        return render_template('login.html',method=request.method)123456789

    使用 Flask-WTF 实现表单

    配置参数

    app.config['SECRET_KEY'] = 'SECRET_KEY'1

    模板页面

    <form method="post">
      #设置csrf_token
      {{ form.csrf_token() }}
      {{ form.us.label }}
      <p>{{ form.us }}</p>
      {{ form.ps.label }}
      <p>{{ form.ps }}</p>
      {{ form.ps2.label }}
      <p>{{ form.ps2 }}</p>
      <p>{{ form.submit() }}</p>
      {% for x in get_flashed_messages() %}
          {{ x }}
      {% endfor %}
    </form>1234567891011121314

    视图函数

    #coding=utf-8
    from flask import Flask,render_template,\
        redirect,url_for,session,request,flash
    
    #导入wtf扩展的表单类
    from flask_wtf import FlaskForm
    #导入自定义表单需要的字段
    from wtforms import SubmitField,StringField,PasswordField
    #导入wtf扩展提供的表单验证器
    from wtforms.validators import DataRequired,EqualTo
    app = Flask(__name__)
    app.config['SECRET_KEY']='1'
    
    #自定义表单类,文本字段、密码字段、提交按钮
    class Login(FlaskForm):
        us = StringField(label=u'用户名',validators=[DataRequired()])
        ps = PasswordField(label=u'密码',validators=[DataRequired(),EqualTo('ps2','err')])
        ps2 = PasswordField(label=u'确认密码',validators=[DataRequired()])
        submit = SubmitField(u'提交')
    
    @app.route('/login')
    def login():
        return render_template('login.html')
    
    #定义根路由视图函数,生成表单对象,获取表单数据,进行表单数据验证
    @app.route('/',methods=['GET','POST'])
    def index():
        form = Login()
        if form.validate_on_submit():
            name = form.us.data
            pswd = form.ps.data
            pswd2 = form.ps2.data
            print name,pswd,pswd2
            return redirect(url_for('login'))
        else:
            if request.method=='POST':
                flash(u'信息有误,请重新输入!')
            print form.validate_on_submit()
    
        return render_template('index.html',form=form)
    if __name__ == '__main__':
        app.run(debug=True)

        更多python内容,关注python自学网。


    起源地 » Flask处理Web表单

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元