• flask之表单验证 2018.12.23


    #flask的消息闪现依赖于flash库,用户发送的请求方式存储在request模块中
    #跳转依赖于redirect模块,还可以通过url_for方法来进行方法上的寻址
    from flask import Flask,flash,render_template,request,session,redirect,url_for
    #导入wtf扩展的表单类
    from flask_wtf import FlaskForm
    #导入自定义表单需要用到的字段类型
    from wtforms import SubmitField,StringField,PasswordField
    #新建一个表单类
    class RegisterForm(FlaskForm):
    username = StringField('用户名')
    password = PasswordField('密码')
    password1 = PasswordField('确认密码')
    submit = SubmitField('注册')
    #建立对象
    app = Flask(__name__)
    #载入配置文件
    app.config.from_pyfile('config.ini')
    #登陆成功后跳转的页面
    @app.route("/hello")
    def hello():
    return ' hello 欢迎 %s ' % session['username']
     
    #指定请求方式,使用methods属性
    @app.route('/',methods=['GET','POST'])
    def index():
    #判断client发送的请求类型
    #自己请求自己的逻辑中,GET只用来解析模板,而POST用来判断数据逻辑
    if request.method == "POST":
    #使用form属性来接收表单提交过来的数据
    username = request.form.get("username")
    password = request.form.get("password")
    password1 = request.form.get("password1")
     
    #判断数据是否同时存在
    #等同于 if username == '' or password == '' or password1 == ''
    if not all([username,password,password1]):
    #利用闪现消息来提醒用户
    flash("参数不足")
    elif password != password1:
    flash("两次密码不一致")
    else:
    #模拟登录 将用户名和密码存到session中
    session['username'] = username
    session['password'] = password
    flash("注册成功")
    #第一种直接跳转网址
    #return redirect('http://localhost:5000/hello')
    #第二种通过url_for方法跳转
    return redirect(url_for(hello))
    #将定义好的表单类传递给模板,进行方法化设置
    return render_template('day04_wtform.html',form=RegisterForm())
    if __name__ == "__main__":
    app.run()
     
     
    模板页(day04_wtform.html):
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>wtfrom</title>
    </head>
    <body>
    <form method='POST'>
    {#所有通过调用出来的值必须要和后台表单类定义的变量一致#}
    {{ form.username.label}}:{{form.username}}
    {{ form.password.label}}:{{form.password}}
    {{ form.password1.label}}:{{form.password1}}
    {# 将flash消息闪现和后台联系起来 #}
    {# 将消息闪现里面的所有消息遍历,取出需要返回给用户的信息 #}
    {% for message in get_flashed_messages() %}
    {{message}}
    {%endfor%}
    {{form.submit}}

    </form>
    </body>
    </html>
  • 相关阅读:
    jquery-4 完整表单验证实例
    从程序员的角度分析微信小程序(编程语言:用到什么学什么)
    微信程序开发
    css3-4 css3边框样式
    css3-3 css3背景样式
    boxfilter 实现
    opencv在arm和x86在移植
    PAT 1033. To Fill or Not to Fill (贪婪)
    [git] fatal: This operation must be run in a work tree
    spring与mybatis集成和事务控制
  • 原文地址:https://www.cnblogs.com/xcsg/p/10175046.html
Copyright © 2020-2023  润新知