python中flask应用(表单处理)

本篇文章给大家带来的内容是关于python中flask应用(表单处理),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

1、为什么使用Flask-WTF?

request对象公开了所有客户端发送的请求信息。特别是request.form可以访问post请求提交的表单数据。
尽管flask的request对象提供的支持足以处理web表单,但依然有许多任务会变得单调且重复。
表单的html代码生成和验证提交的表单数据就是两个很好的例子。

优势:

Flask-WTF扩展使得处理web表单能获得更愉快的体验。该扩展是一个封装了与框架无关的WTForms包的Flask集成。

2、什么是表单处理?

在网页中,为了和用户进行信息交互总是不得不出现一些表单。
flask设计了WTForm表单库来使flask可以更加简便地管理操作表单数据。

立即学习“Python免费学习笔记(深入)”;

WTForm中最重要的几个概念如下:

1). Form类,开发者自定义的表单必须继承自Form类或者其子类。
Form类最主要的功能是通过其所包含的Field类提供对表单内数据的快捷访问方式。

2). 各种Field类,即字段。一般而言每个Field类都对应一个input的HTML标签。
比如WTForm自带的一些Field类比如BooleanField就对应,
SubmitField就对应等等。

3). Validator类。这个类用于验证用户输入的数据的合法性。
比如Length验证器可以用于验证输入数据的长度,
FileAllowed验证上传文件的类型等等。

另外,flask为了防范csfr(cross-site request forgery)攻击,   默认在使用flask-wtf之前要求app一定要设置过secret_key。   最简单地可以通过app.config[‘SECRET_KEY’] = ‘xxxx’来配置。

3、常见的Field类

  PasswordField     密码字段,自动将输入转化为小黑点

  DateField         文本字段,格式要求为datetime.date一样

  IntergerField     文本字段,格式要求是整数

  DecimalField      文本字段,格式要求和decimal.Decimal一样

  FloatField        文本字段,值是浮点数

  BooleanField      复选框,值为True或者False

  RadioField        一组单选框

  SelectField       下拉列表,需要注意一下的是choices参数确定了下拉选项,但是和HTML中的 标签一样,其是一个tuple组成的列表,可以认为每个tuple的第一项是选项的真正的值,而第二项是alias。

  MultipleSelectField  可选多个值的下拉列表

Validator验证函数

Validator是验证函数,把一个字段绑定某个验证函数之后,flask会在接收表单中的数据之前对数据做一个验证,如果验证成功才会接收数据。验证函数Validator如下,具体的validator可能需要的参数不太一样,这里只给出一些常用的,更多详细的用法可以参见wtforms/validators.py文件的源码,参看每一个validator类需要哪些参数:

*基本上每一个validator都有message参数,指出当输入数据不符合validator要求时显示什么信息。

  Email  验证电子邮件地址的合法性,要求正则模式是^.+@(12+)$

  EqualTo  比较两个字段的值,通常用于输入两次密码等场景,可写参数fieldname,不过注意其是一个字符串变量,指向同表单中的另一个字段的字段名

  IPAddress  验证IPv4地址,参数默认ipv4=True,ipv6=False。如果想要验证ipv6可以设置这两个参数反过来。

  Length  验证输入的字符串的长度,可以有min,max两个参数指出要设置的长度下限和上限,注意参数类型是字符串,不是INT!!

  NumberRange  验证输入数字是否在范围内,可以有min和max两个参数指出数字上限下限,注意参数类型是字符串,不是INT!!然后在这个validator的message参数里可以设置%(min)s和%(max)s两个格式化部分,来告诉前端这个范围到底是多少。其他validator也有这种类似的小技巧,可以参看源码。

  Optional  无输入值时跳过同字段的其他验证函数

  Required  必填字段

  Regexp  用正则表达式验证值,参数regex=’正则模式’

  URL  验证URL,要求正则模式是^[a-z]+://(?P3+)(?P:[0-9]+)?(?P/.*)?$

  AnyOf  确保值在可选值列表中。参数是values(一个可选值的列表)。特别提下,和SelectField进行配合使用时,不知道为什么SelectField的choices中项的值不能是数字。。否则AnyOf的values参数中即使有相关数字也无法识别出当前选项是合法选项。我怀疑NoneOf可能也是一样的套路。

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

#forms.py文件:用来设定规则from flask_wtf import FlaskFormfrom flask_wtf.file import FileRequired, FileAllowedfrom wtforms import StringField, PasswordField, SubmitField, FileFieldfrom wtforms.validators import DataRequired, Lengthclass LoginForm(FlaskForm):    name = StringField(        label="用户名/邮箱/手机号",        validators=[            # DataRequired("请输入用户名"),            Length(3, 20, message="长度不符"),        ]    )    passwd = PasswordField(        label="密码",        validators=[            # DataRequired("请输入密码"),            Length(3, 20),        ], )    file = FileField(        label="简历",        validators=[            FileRequired(),            FileAllowed(['pdf', 'txt'], 'pdf 能被接收')        ]    )

登录后复制

#templates/demo/login.html        Title    {{ form.hidden_tag() }}    {{ form.name.label }} {{ form.name }}    {{ form.passwd.label }} {{ form.passwd }}    {{ form.file }}    

登录后复制

#主程序import randomfrom flask import Flask, redirect, render_templatefrom forms import LoginFormfrom flask_bootstrap import  Bootstrapapp = Flask(__name__)bootstrap = Bootstrap(app)app.config['SECRET_KEY'] =  random._urandom(24)@app.route('/success/')def success():    return  "success"@app.route('/login/', methods=('GET', 'POST'))def submit():    # 实例化表单对象;    form = LoginForm()    if form.validate_on_submit():        print(form.data)        return redirect('/success/')    return render_template('demo/login.html', form=form)app.run()

登录后复制

2438795915-5bd1b5c59ef8a_articlex.png

以上就是python中flask应用(表单处理)的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2534648.html

(0)
上一篇 2025年3月5日 21:34:14
下一篇 2025年2月19日 01:43:31

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 怎么找到黑客的联系方式?

    如果你想要找到黑客的联系方式,那么你可能面临以下难题:黑客往往会隐藏他们的身份,并且他们的联系方式很难被发现。php小编草莓在这里为你提供了一份指南,旨在帮助你找到黑客的联系方式。在本指南中,我们将介绍一些常见的黑客使用的联系方式,并提供一…

    2025年3月5日
    200
  • python中flask_bootstrap装饰网页的介绍(附代码)

    本篇文章给大家带来的内容是关于python中flask_bootstrap装饰网页的介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 flask_bootstrap bootstrap 是 twitter 开发…

    2025年3月5日 编程技术
    200
  • python实现Todo清单的代码示例

    本篇文章给大家带来的内容是关于python实现Todo清单的代码示例,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 添加分页功能 第一步:是对视图函数的改写,通过查询数据库数据,进行分页显示 # 修改清单显示的视图函数@a…

    2025年3月5日
    200
  • python中flask_migrate,flask_script的使用介绍(附代码)

    本篇文章给大家带来的内容是关于python中flask_migrate,flask_script的使用介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 flask_migrate 在使用falsk_sqlalc…

    2025年3月5日
    200
  • python中Flask蓝图的使用方法(附代码)

    本篇文章给大家带来的内容是关于python中Flask蓝图的使用方法(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 蓝图 之前我们已经通过代码了解了一些flask基本的用法,现在出现一个问题,我们要做的功能越来越…

    2025年3月5日
    200
  • python中Django图书人物适配系统的实现方法(后台)

    本篇文章给大家带来的内容是关于python中Django图书人物适配系统的实现方法(后台),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 Django python下有许多款不同的 web 框架。django是重量级选手中…

    2025年3月5日 编程技术
    200
  • python中Django图书人物适配系统的实现方法(前端)

    本篇文章给大家带来的内容是关于python中Django图书人物适配系统的实现方法(前端),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 Django添加路由 与flask一样,django也需要使用路由将url与服务端要…

    2025年3月5日 编程技术
    200
  • Python的优势和不足有哪些

    本篇文章给大家介绍什么是python,python有哪些优势和不足处,让大家对于python有一个初步的了解。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 首先我们来了解什么是Python? Python是一种面向对象的…

    编程技术 2025年3月5日
    200
  • 使用Python可以做什么

    使用Python可以做的事有:1、进行通用应用程序编程;2、进行数据科学和机器学习;3、实现不同代码间的相互操作;4、作为高效的代码生成器工作,用来驱动代码生成系统;5、快速创建从简单REST API到成熟数据驱动站点的所有内容。 本文操作…

    2025年3月5日
    200
  • Python如何判断一个字符串是否包含指定子字符串

    python如何判断一个字符串是否包含指定字符串?本篇文章就给大家介绍python判断一个字符串是否包含指定子串的3种方法。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 程序员在字符串上使用的最常见的操作之一是判断字符串…

    编程技术 2025年3月5日
    200

发表回复

登录后才能评论