Code前端首页关于Code前端联系我们

Flask Web 极简教程 - Flask WTF Froms(A 部分)

terry 2年前 (2023-09-24) 阅读数 53 #后端开发

1。表单

表单主要负责收集页面数据。表单由三个基本组件组成:

  • 表单标签:其中包含处理表单数据所使用的 CGI 程序的 URL 以及将数据发送到服务器的方法。
  • 表单字段:包括带密码的文本框、隐藏的多行字段、带单选按钮的复选框和文件上传框等。
  • 表单按钮:包括提交按钮、重置按钮和通用按钮键;用于将数据传输到服务器上的 CGI 脚本或取消输入。表单按钮还可用于通过定义的处理脚本控制其他处理任务。

常用的表单有注册表单、登录表单、搜索表单等。

在视图函数中获取表单数据有两种方式:

  • GET请求提交的表单:request.args.get(' name ', None )
  • POST请求提交表单:request.from.get('age', None)

2. WTF Form

WTF Form是一个第三方库,可以通过Python代码生成表单,而Flask-WTF是Flask集成了WTF表单功能的实现。

Flask Web 极简教程 – Flask WTF Froms(Part A) Flask-WTF 可以实现这些功能,

  • 集成了 wtforms。
  • 使用 csrf 令牌确保表单安全。
  • 全局 CSRF 保护。
  • 支持验证码。
  • 支持与 Flask-Uploads 一起上传文件。
  • 国际一体化。

更多信息请参考Flask-WTF官网。 Flask-WTF 必须安装后才能使用。

pip3 install Flask-WTF

在Pycharm中创建一个新的Flask项目flask-wtf。要使用Flask-WTF,需要在app.py中创建Flask对象后添加以下配置。

# 配置WTF的CSRF,Value可以是任意的字符串
app.config['WTF_CSRF_SECRET_KEY'] = 'abc21231fafae2'

第一个表单模型

在项目文件夹下新建一个form.py文件,专门用来编写表单模型。以登录表单为例,添加一个LoginForm对象并添加其属性。

from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField

class LoginForm(FlaskForm):
    username = StringField(label='用户名')
    password = PasswordField(label='密码')
    submit = SubmitField(label='提交')

表单字段常见的核心属性如下

属性名称 属性功能
标签表单表单中的标签标签,如输入框之前的文字描述
default输入框默认值​​
validators表单验证规则
widget自定义界面视图
描述帮助文本

在app.py中添加查看功能

from flask import Flask, render_template
from form import LoginForm

@app.route('/form')
def form():
    login_form = LoginForm()
    # 返回login_form表单模型,在form.html中进行渲染
    return render_template('form.html', login_form=login_form)

添加 form.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8"/>
    <title>Form</title>
</head>
<body>
<h3>登录</h3>
<form action="">
    {# 渲染LoginForm表单模型中username字段的label属性#}
    {{ login_form.username.label }}:
    {{ login_form.username }} <br>
    {{ login_form.password.label }}:
    {{ login_form.password }} <br>
    {{ login_form.submit }}
</form>
</body>
</html>

模板并启动应用程序。浏览器打开http://127.0.0.1:5000/form Flask Web 极简教程 – Flask WTF Froms(Part A)

表单显示成功,但输入框为空。您可以在表单模型中传递字段的默认属性。设置默认值。

# 其余代码不变

class LoginForm(FlaskForm):
    username = StringField(label='用户名', default='stark')
    password = PasswordField(label='密码', default='1231231')
    submit = SubmitField(label='提交')

重新访问http://127.0.0.1:5000/form Flask Web 极简教程 – Flask WTF Froms(Part A)

用户名字段类型为StringField并显示默认值设置,密码为PasswordField类型。虽然设置了默认值,但是无法显示。在表单的用户名和密码输入框中输入信息。 Flask Web 极简教程 – Flask WTF Froms(Part A) 可以看到密码不是以明文形式显示的

表单模型的字段类型

第一种表单模型中使用了两种字段类型,即StringField和PasswordField,这也是可以的在页面上输入密码 以非明文形式显示密码。除了这两种类型之外,还有其他字段类型。

  • 文本/字符串相关类型
    • StringField,字符串输入
    • PasswordField,密码输入
    • TextAreaField,长文本输入
    • HiddenField,隐藏表单字段
  • 数字类型与整数和小数都相关Type
    • FloadField,浮点输入
    • IntegerField,整数输入
    • DecimalField,精确小数输入
  • 单选、多选等选择相关类型
    • RadioField,单选
    • 选择字段,下一个拉单 选择
    • 选择多个字段,多重选择下拉列表
    • BoolEanfield,勾选
  • 日期和时间相关类型
    • 日期字段,日期选择
    • 日期时间字段,日期和时间选择相关类型
      • 文件字段,单选文件
      • MultipleFileField,多选文件
    • 其他类型
      • SubmitField,提交表单按钮
      • FieldList,自定义表单选择列表
      • FormField,由多个字段组成的自定义选项

    Aute ur :黎曼假设
    来源:稀土矿块

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门