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

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

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

没有使用WTF的后端代码

from flask import Flask,render_template,requestapp = Flask(__name__)'''目的:实现一个简单的登陆的逻辑处理1.路由需要有get和post两种请求方式 -->需要判断请求方式2.获取请求的参数3.判断参数是否填写,以及密码是否相同4.如果判断都没有问题,就返回一个success''''''给模版传递消息 flash ---> 需要对内容加密,需要设置secret_key,做加密消息的混淆模板中需要遍历消息'''app.secret_key = 'sunwenbo'@app.route('/wtf',methods=['GET','POST'])def wtf():    #request:请求对象--->获取请求方式、数据    #1.判断请求方式    if request.method == 'POST':        #2.获取请求的参数        username = request.form.get('username')        password = request.form.get('password')        password2 = request.form.get('password2')        print username        #3.判断参数是否填写,以及密码是否相同        if not all([username,password,password2]):            #解决编码问题u            flash(u'参数不完整')            #print '参数不完整'        elif password != password2:            flash(u'密码不一致')            #print '密码不一致'        else:            return 'success'    return render_template('wtf.html')if __name__ == '__main__':    app.run()

没有使用WTF的前端代码

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>WTF表单</title></head><body><form method="post">    <label>用户名:</label><input type="text" name="username"><br>    <label>密码:</label><input type="password" name="password"><br>    <label>确认密码:</label><input type="password" name="password2"><br>    <input type="submit" value="提交">{# 使用遍历获取闪现的消息 #}    {% for message in get_flashed_messages() %}        {{ message }}    {% endfor %}</form></body></html>
使用WTF后端代码from flask import Flask,render_template,request,flashfrom flask_wtf import FlaskFormfrom wtforms import StringField,PasswordField,SubmitFieldfrom wtforms.validators import DataRequired,EqualTo# 解决编码问题import sysreload(sys)sys.setdefaultencoding("utf-8")app = Flask(__name__)'''使用WTF实现表单1.自定义表单类'''class LoginForm(FlaskForm):    username = StringField('用户名:',validators=[DataRequired()])    password = PasswordField('密码:',validators=[DataRequired()])    password2 = PasswordField('确认密码:',validators=[DataRequired(),EqualTo('password','密码填入的不一致')])    submit = SubmitField('提交')@app.route('/form',methods=['GET','POST'])def login():    login_form = LoginForm()    # 1. 判断请求方式    if request.method == 'POST':        # 2. 获取请求参数        username = request.form.get('username')        password = request.form.get('password')        password2 = request.form.get('password2')        # 3. 验证参数,WTF可以一句话就实现所有的校验        # 我们没有CSRF token,使用WTF会考虑更高的安全性        if login_form.validate_on_submit():            print username,password            return 'success'        else:            flash('参数有误')    return render_template('wtf.html',form=login_form)if __name__ == '__main__':    app.run()
使用WTF前端代码<form method="post">    {# 开启csrf token #}    {{ form.csrf_token() }}    {{ form.username.label }}{{ form.username }} <br>    {{ form.password.label }}{{ form.password }} <br>    {{ form.password2.label }}{{ form.password2 }} <br>    {{ form.submit }}</form>

更多相关文章

  1. 成为 Java GC 专家( 4 ): Apache 的 MaxClients 参数详解
  2. jQuery编程基础精华02(属性、表单过滤器,元素的each,表单选择器,子元
  3. jQuery使用之(四)处理页面的表单元素
  4. 如何在Ajax.ActionLink中获取表单中的输入数据?
  5. 动态添加表单元素,将它们存储到MySQL并在将来更改/删除它们
  6. Ajax php登录表单不指向另一个页面
  7. 分享27款非常棒的 jQuery 表单插件
  8. 如何使用jQuery的叠加对话框作为反馈表单
  9. Jquery Validate 相关参数及常用的自定义验证规则

随机推荐

  1. Fetching https://dl-ssl.google.com/and
  2. 登录案例_android
  3. Android统计图集合源码
  4. 另类方法屏蔽Android4.03的HOME按键
  5. android柱状图源码
  6. ANDROID应用安全防御
  7. AndroidUI线程机制
  8. Android O 版本(Android 8.0) 存储空间不足
  9. 明天 你看好Erlang还是看好android
  10. TableLayout设置行与行之间的分割线