• Flask ~~“一见钟情之初体验”(Web表单)


    之前我们讲了Flask中的过滤  继承  包含  宏   今天来说说表单,说起表单大家都不陌生吧,在html中form表单一般用于采集数据和提交数据,在Flask中当然也有表单,现在就说说Flask中的表单的简单应用。

    在说表单前给大家先说一下Flask中的消息闪现

    Flash中的消息闪现,在官方的解释是用来给用户做出反馈。不过实际上这个功能只是一个记录消息的方法,在某一个请求中记录消息,在下一个请求中获取消息,然后做相应的处理,也就是说flask只存在于两个相邻的请求中“闪现”,第三次请求就不存在这个flash了。

    通常情况下配合模板系统进行调用,可以实现一种伪”ajax”请求的效果

    基于 flash 模块

    from flask import flash

    模板输出flash

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

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

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

    直接上代码了,代码中有相应的注释和注意事项:

    使用 html 自带的表单

    创建模板文件如: login.html,在其中直接写form表单:

    <!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>flask普通表单提交数据,使用flask消息闪现来将反馈显示给用户</title>
    </head>
    <body>
        
        <h1> 用户注册</h1>
        <br>
        {# action属性。如果不写 默认提交给自己 methodsh属性 来指定表单的提交方式#}
        <form method="post">
            <lable> 用户名</lable>
            {# from 提交数据通过name选择器来提交#}
            <input type="text" name="username" placeholder="请输入用户名">
            <br>
    
    
            <label>密码</label>
            <input type="password" name="password">
            <br>
    
            <label>确认密码</label>
            <input type="password" name="password1">
            <br>
    
            {# 将flask 消息闪现和后台联系起来 #}
            {# 将消息闪现里面的所有消息遍历,取出需要返回给用户的消息#}
            {% for message in get_flashed_messages() %}
                        {{ message }}
            {% endfor %}
    
            <input type="submit" value="注册">
        </form>
    
    </body>
    </html>

    当然这只是简单的表单写入,还需要写一个py文件把它们联系起来。具体如下:

    # -*- encoding: utf-8 -*-
    #flask 的消息闪现以来与flask库,用户发送的请求方式存储在requests模块中
    from flask import Flask,flash,render_template,request
    
    #导入wtf扩展的表单类
    from flask_wtf import FlaskForm
    #导入自定义表单需要用到的字段类型
    from wtforms import SubmitField,StringField,PasswordField
    
    #新建一个表单类
    
    class RegisterFrom(FlaskForm):
        username=StringField('用户名')
        password=PasswordField('密码')
        password1=PasswordField('确认密码')
        submit=SubmitField('注册')
    
    #建立对象
    app = Flask(__name__)
    
    #载入配置文件
    
    app.config.from_pyfile('config.ini')
    
    @app.route ('/',methods=['POST','GET'])
    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:
                flash('注册成功')
                return '成功'
                    
    
    
        
        #将定义号的表单类传递给模板,进行方法化设置
        return render_template('day4_wtform.html',form=RegisterFrom())
    
    if __name__ == "__main__":
        app.run()
  • 相关阅读:
    代码实现:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。 第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份, 第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
    代码实现:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n
    一款炫酷Loading动画--载入成功
    [魅族Degao]Androidclient性能优化
    Spring2.5学习3.2_编码剖析@Resource注解的实现原理
    freemarker写select组件报错总结(六)
    storm笔记:Storm+Kafka简单应用
    2014-8-4阿里电话面试
    UML--组件图,部署图
    CentOS7.1 KVM虚拟化之经常使用管理虚拟机命令(3)
  • 原文地址:https://www.cnblogs.com/sashao/p/10176020.html
Copyright © 2020-2023  润新知