Flask 框架(四)— 表单处理

1.表单处理

Web 表单是 Web 应用程序的基本功能,它是 HTML 页面中负责数据采集的部件。通常情况下,表单有三个部分组成,分别是表单标签、表单域、表单按钮。表单允许用户输入数据,负责HTML页面数据采集,通过表单将用户输入的数据提交给服务器。

下面通过一个简单的案例来说明使用;

from flask import Flask,render_template,request

app = Flask(__name__)
app.debug = True

@app.route("/show/")
def show():
    return render_template("show.html")

@app.route("/handle/",methods=["POST"])
def handle():
    # form 表单数据
    form_results = request.form
    # 显示
    username = form_results.get("name")
    chinese = form_results.get("chinese")
    programming = form_results.get("programming")
    description = form_results.get("description")
    # 数据
    results = {"username":username,
               "chinese":chinese,
               "programming":programming,
               "description":description,
               }
    return render_template("results.html",results=results)

if __name__ == '__main__':
    app.run()

前端模板文件代码,参考如下:


    登录

    表单显示

        姓名:
        语文成绩:
        编程成绩:
        自我评价:

加载成功数据后,展示数据的页面代码如下:


    显示结果

    结果

        {% for key,value in results.items() %}

                {{ key }}
                {{ value }}

        {% endfor %}

在浏览器地址栏输入 http://localhost:5000/show后,显示效果如下:

Flask 框架(四)— 表单处理

表单扩展

上述是表单的基本使用,下面我们可以使用 Flash-WTF 表单扩展库(更高效)来实现一个功能有输入用户名、输入密码与确认密码,以及提交按钮的表单。

首先,使用该库需要先进行安装:pip install Flask-WTF==0.14,因为 Flask 与 werkzeug 的兼容性问题,所以还需要安装:pip install werkzeug==0.16.0 。

接着在主目录下创建 loginform.py 文件,编写代码如下;

from flask import Flask,render_template,request,flash
from flask_wtf import FlaskForm
from wtforms import StringField,PasswordField,SubmitField
from wtforms.validators import DataRequired,EqualTo

app = Flask(__name__)
app.debug = True
密钥
app.config["SECRET_KEY"] = "admin112233"

class LoginForm(FlaskForm):
    username = StringField(label=u"用户名:",validators=[DataRequired()])
    password = PasswordField(label=u"密码:",validators=[DataRequired()])
    repwd = PasswordField(label=u"确认密码:",validators=[DataRequired(),EqualTo("password","两次输入密码不一致!")])
    # 提交
    submit = SubmitField(label=u"提交")

@app.route("/index/")
def index():
    post_form = LoginForm()
    return render_template("loginform.html",form=post_form)

@app.route("/login/",methods=["POST","GET"])
def login():
    if request.method == "POST":
        post_form = LoginForm()
        if post_form.validate_on_submit():
            name = post_form.username.data
            password = post_form.password.data
            repwd = post_form.repwd.data
            print("姓名:",name)
            print("密码:",password)
            print("确认密码:",repwd)
            flash("欢迎您,%s"%name)
        else:
            flash("信息有误,请重新输入!!!")
        return render_template("hello.html",form=post_form)

if __name__ == '__main__':
    app.run()

显示表单页面的代码如下;


    Login

    登录表单

        {{ form.csrf_token() }}
        {{ form.username.label }}{{ form.username }}
        {{ form.password.label }}{{ form.password }}
        {{ form.repwd.label }}{{ form.repwd }}
        {{ form.submit() }}
        {% for msg in get_flashed_messages() %}
            {{ msg }}
        {% endfor %}

数据验证成功的页面参考代码如下;


    Title

    {% for msg in get_flashed_messages() %}
        {{ msg }}
    {% endfor %}

运行上述程序,在地址栏输入 http://localhost:5000/index 后,效果如下;

Flask 框架(四)— 表单处理

Original: https://blog.csdn.net/m0_54143674/article/details/122351962
Author: Jocelyn小熊
Title: Flask 框架(四)— 表单处理

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/749897/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • django ORM 简介

    一.django ORM 简介 1.什么是ORM ORM : 全称 object relational mapping, 对象关系映射 功能 : 通过orm实现使用操作对象的方式来…

    Python 2023年8月6日
    084
  • Pandas知识点-详解分组函数groupby

    Pandas知识点-详解分组函数groupby 在数据分析时,经常需要将数据分成不同的群组,pandas中的groupby()函数可以完美地完成各种分组操作。分组是根据DataFr…

    Python 2023年8月6日
    054
  • ModuleNotFoundError No module named ‘PIL’问题解决

    原文链接 Python使用时出现报错: ModuleNotFoundError No module named ‘PIL’ 该提示表示缺少pillow模块,…

    Python 2023年5月24日
    090
  • Python Matplotlib绘制漂亮的K线图,利用Tushare绘制K线图

    1 引言 做量化分析,难免要将自己的某些指标等绘制在K线图上,或者对某些指标进行改造观察K线图和指标对应的走势关系。那么用Python如何绘制和炒股软件类似的效果呢。 2 准备工具…

    Python 2023年9月1日
    0138
  • 想做长期的 AB 实验?快来看看这些坑你踩了没

    作者:江颢 1.什么是长期的 AB 实验 大部分情况下,我们做的 AB 实验都是短期的,一到两周或者一个月之内的,通过分析这段时期内测得的实验效应得出实验结论,并最终进行推广。 长…

    Python 2023年10月12日
    059
  • 一言不合就重构

    hello,大家好呀,我是小楼。 前段时间不是在忙么,忙的内容之一就是花了点时间重构了一个 服务的健康检查组件,目前已经慢慢在灰度线上,本文就来分享下这次重构之旅,也算作个总结吧。…

    Python 2023年10月13日
    049
  • .Net 7内容汇总(2)–原始字符串

    在C# 11里,添加了一个叫原始字符串的东西。 这个东西算是我相当喜欢以及期待的功能。 我们先来看看这玩意咋用。 首先,我们先来看看之前如果我们需要定义一个带引号的字符串我们需要怎…

    Python 2023年10月21日
    030
  • Django学习记录12

    指对一个数据表里的所有元素进行部分(整表聚合)或者全部(分组聚合)统计查询eg:统计平均值、最大、最小值等整表查询:1、导入 from django.db.models impor…

    Python 2023年8月5日
    058
  • 区块链游戏- Solcery(Summoner 召唤者)

    区块链游戏- Solcery 官方推特:https://twitter.com/SolceryGameshttp://solcery.xyzhttp://solcery.gitbo…

    Python 2023年9月19日
    037
  • Python 元组tuple详解(超详细)

    元组是 有序且 不可更改的集合。在Python中,元组使用圆括号 () 编写的。 1、创建元组 元组的创建很简单,使用圆括号 () 直接创建或者使用 tuple() 函数创建,只需…

    Python 2023年8月1日
    033
  • Matplotlib剑客行——没有工具用代码也能画图的造型师

    个性签名:整个建筑最重要的是地基,地基不稳,地动山摇。而学技术更要扎稳基础,关注我,带你稳扎每一板块邻域的基础。博客主页:七归的博客收录专栏:Python三剑客之江湖云南来的北往的…

    Python 2023年9月2日
    054
  • 盗墓笔记案例

    目录 目标网址:http://www.daomubiji.com/ 数据内容: scrapy项目 实现分布式的步骤 代码的实现 Spider.py 1.Python中os.mkdi…

    Python 2023年10月3日
    055
  • iOS 语言基础&初探 Xcode 工具

    前言: 作为 iOS 开发的主要应用工具之一,Xcode 已经越来越被业内认可,本章节将针对此官方开发工具,为同学解读 Xcode 的基本情况,认识 Xcode 的工程体系,带领大…

    Python 2023年11月4日
    042
  • 最详细的Excel模块Openpyxl教程(五)-结合Numpy和Pandas

    在上次的推文中,我们介绍了使用Openpyxl来进行数据的过滤和排序的操作, 相关推文可以从本公众号的底部相关菜单获取。在那篇推文中我们使用到了Pandas。因此本次推文我们就来看…

    Python 2023年8月7日
    059
  • Postman API测试工具 – 初认知 基本使用(一)

    Postman – API测试工具 初认知(一) 文章目录 Postman – API测试工具 初认知(一) 一、什么是Postman? 二、如何下载Pos…

    Python 2023年10月10日
    053
  • Swin-Transformer(原理 + 代码)详解

    参考博文 图解Swin TransformerSwin-Transformer网络结构详解【机器学习】详解 Swin Transformer (SwinT)论文下载 (二)代码的下…

    Python 2023年8月1日
    066
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球