flask—wtf表单的实现和表单数据的获取

      在Flask中,为了处理web表单,我们一般使用Flask-WTF扩展,它封装了WTForms,并且它有验证表单数据的功能 ---- 使用Flask-WTF需要配置参数SECRET_KEY ( CSRF_ENABLED是为了CSRF(跨站请求伪造)保护。 SECRET_KEY用来生成加密令牌,当CSRF激活的时候,该设置会根据设置的密匙生成加密令牌。在HTML页面中直接写form表单 )。

#demo1文件

#coding=utf-8

from flask import Flask,render_template ,request    #render_template为模板

from config import Config

#导入flask_wtf提供的表单

from  flask_wtf import  FlaskForm

#导入表单类提供的字段

from wtforms import StringField,PasswordField,SubmitField

#导入表单类提供的验证函数

from wtforms.validators import DataRequired,EqualTo

app = Flask(__name__)

#使用配置文件

app.config.from_object(Config)

#需求:注册页面

#自定义表单类

class Form(FlaskForm):

     # 定义表单字段/input/password/submit

      user = StringField(validators=[DataRequired()])

      pswd = PasswordField(validators=[DataRequired(),EqualTo('psed2')])

      psw2 = PasswordField(validators=[DataRequired()])

      submit = SubmitField(label=u'注册')

@app.route('/',method=['GET','POST'])

def demo2():

      #实例化表单类对象

      form = Form()

     #form.validata_on_submit()函数会依次调用验证器,验证器条件满足,会查看表单页面中是否设置csrf_token

      if form.validata_on_submit():

            # 获取表单数据

            us = form.user.data

            ps = form.pswd.data

            ps2 = form.pswd2.data

            print us,ps,ps2

      print  form.validate_on_submit()

      return render_template('login.html',form=form)

@app.route('/demo1',method=['GET','POST'])

def demo1():

      #获取表单数据

     user = request.form.get('user')

     pswd = request.form.get('pswd')

      return render_template('login.html')

if __name__=='__main__':

     app.run()

"""demo1同级目录templates下的login.html"""

<!DOCTYPE html>

<html lang="en">

<head>

         <meta charset="UTF-8">

          <title>{{request.merhod}}</title>

</head>

<body>

<h1>注册</h1>

<form method="post">

        {#  csrf_token的本质作用就是混淆发送给后端的参数#}

        {{form.csrf_token}}

       <p>{{form.user}}</p>

       <p>{{form.pswd}}</p>

       <p>{{form.pswd2}}</p>

       <p>{{form.submit}}</p>

</form>

<h2>登陆</h2>

{#手写input表单,登陆页面#}

<form method="post">

        <p><input type = "text" name="user" placehoder="User" size="35"></p>

         <p><input type = "password" name="pswd" placehoder="Password" size="35"></p>

         <p><input type="submit"></p>

</form>

</body>

</html>

"""demo1同级文件config.py"""

class  Config:

      DEBUG = True

      SECRET_KEY = ‘’

转载于:https://my.oschina.net/u/3753872/blog/1649930

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值