zoukankan      html  css  js  c++  java
  • flask form表单

    我们用form表单来做一个简单的登陆页面:

    <form method="post">

    <label> 用户名 </label>

    {# form提交数据通过name选择器提交 #}
    <input type="text" name="username" placeholder="请输入用户名"/>
    <br />
    <label>密码</label>
    <input type="password" name="password"/>
    <br />
    <label>确认密码</label>
    <input type="password" name="password1"/>
    <br />
    {# 将flash消息闪现和后台联系起来 #}
    {# 将消息闪现里的所有消息遍历,取出需要返回给用户的信息#}
    {% for message in get_flashed_messages() %}
    {{ message }}
    {% endfor %}

    <input type="submit" value="注册" />
    </form>
     
    然后再py文件里配置路由,编写简单的逻辑即可,如下:
     
    @app.route('/')
    def index():
    #判断发送client发送请求类型
    #自己请求自己的逻辑中。GET只用来解析模板,而POST用来判断数据逻辑
    if request.method == "POST":
    #使用form属性来接受表单提交过来的数据
    username = request.form.get('username')
    password = request.form.get('password')

     
    session['username'] = username
    session['password'] = password

    #判断数据是否同时存在
    if not all([username,password,password1]):
    #利用闪现消息来提醒用户,注意flash需要导包
    flash('参数不足')
    elif password != password1:
    flash('两次密码不一致')
    else:
    flash('注册成功')
    #第一种直接跳转
    # return redirect('http://localhost:5000/hello')
    #第二中通过方法跳转,这里是当成功是跳转的另一个页面url_for是一个本地跳转的方法,url_for后面跟的是函数方法名
    return redirect(url_for('hello'))

    #将定义好的表单传递给模板,进行方法化设置
    return render_template('day4_form.html')
     
    另外,flask还有一个 Flask wtform 组件

    WTForms是一个支持多个web框架的form组件,用于简化form表单的定义和一些操作

    首先需要在命令下安装:

    pip install flask-wtf

    使用时也需要导包:

    #导入wtf扩展的表单类
    from flask_wtf import FlaskForm
    #导入自定义表单需要用到的字段类型
    from wtforms import SubmitField,StringField,PasswordField
     
    WTFroms 支持的HTML标准字段:

    字段类型      说  明

    StringField 文本字段

    TextAreaField 多行文本字段

    PasswordField 密码文本字段

    HiddenField 隐藏文本字段

    DateField 文本字段,值为 datetime.date 格式

    DateTimeField 文本字段,值为 datetime.datetime 格式

    IntegerField 文本字段,值为整数

    DecimalField 文本字段,值为 decimal.Decimal

    FloatField 文本字段,值为浮点数

    BooleanField 复选框,值为 True False

    RadioField 一组单选框

    SelectField 下拉列表

    SelectMultipleField 下拉列表,可选择多个值

    FileField 文件上传字段

    SubmitField 表单提交按钮

    还有一些验证函数:

    验证函数 说  明

    Email 验证电子邮件地址

    EqualTo 比较两个字段的值;常用于要求输入两次密码进行确认的情况

    IPAddress 验证 IPv4 网络地址

    Length 验证输入字符串的长度

    NumberRange 验证输入的值在数字范围内

    Optional 无输入值时跳过其他验证函数

    Required 确保字段中有数据

    Regexp 使用正则表达式验证输入值

    URL 验证 URL

    AnyOf 确保输入值在可选值列表中

    NoneOf 确保输入值不在可选值列表中

    我们用WTForm做一个简单的登陆表单:

    如上导包之后定义一个表单类:

    #新建一个表单类
    class RegisterForm(FlaskForm):
    username = StringField('用户名')
    password = PasswordField('密码')
    password1 = PasswordField('确认密码')
    submit = SubmitField('注册')
    逻辑判断还是用index方法中的逻辑判断
     
    然后在模板中定义:
    <form method="POST">

    {# 所有通过key调用出来的值必须要和后台表单类所定义的变量一致 #}
    {{ form.username.label }} : {{ form.username }}
    {{ form.password.label }} : {{ form.password }}
    {{ form.passsword1.label }} : {{ form.password1 }}

    <br /><br />
    {# 将flash消息闪现和后台联系起来 #}
    {# 将消息闪现里的所有消息遍历,取出需要返回给用户的信息#}
    {% for message in get_flashed_messages() %}
    {{ message }}
    {% endfor %}

    {# 使用session输出值 #}
    {{ session['username'] }}

    {{ form.submit }}

    </form>

    WTForm与自定义不同指出在于它本身封装的一些字段类型,输出是通过form'调用即可

    还有就是他可以抵制CSRF跨站请求伪造的攻击,更具安全性

     
  • 相关阅读:
    计算机组成原理期末第十章【计算部分】
    计算机组成原理期末第六章【计算部分】
    快速傅里叶变换总结
    Graph 题解
    NOI 赛前复习旧题 & 复习知识点计划
    Party 题解
    洛谷 P7054 [NWRRC2015]Graph 题解
    CF1542D Priority Queue 题解
    Codeforces Round #701 (Div. 2) E. Move and Swap
    常微分方程
  • 原文地址:https://www.cnblogs.com/ssjz12/p/10175160.html
Copyright © 2011-2022 走看看