python中Flask Web 表单的使用方法介绍

下面是 Python 中 Flask Web 表单的使用方法介绍:

Flask Web 表单

Flask Web 表单(Flask Web Forms)是 Flask 框架的一个扩展,它提供了简单易用的 API 来处理 Web 表单。使用 Flask Web 表单,可以轻松地编写处理用户表单的代码并实现表单验证。

安装 Flask Web 表单

安装 Flask Web 表单很简单,只需要使用 pip 命令:

pip install Flask-WTF

创建一个基本的 Web 表单

首先,在 Flask 应用程序中导入 FlaskWebForms:

from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired

然后,创建一个继承自 FlaskForm 的表单类。在这个表单类中,我们需要使用 WTForms 提供的字段类型定义表单字段。例如,StringField 表示字符串类型,SubmitField 表示提交按钮类型。还可以为表单字段添加验证器(validators),例如 DataRequired 验证器用于确保用户必须填写该字段。

示例:

class NameForm(FlaskForm):
    name = StringField('What is your name?', validators=[DataRequired()])
    submit = SubmitField('Submit')

接下来,在 Flask 路由函数中创建该表单类的实例,并渲染该表单。此时可以使用 render_template() 函数渲染 HTML 模板。在 HTML 模板中,可以使用 Jinja2 模板引擎内置的表单宏(form macro)简化表单的渲染。

示例:

@app.route('/', methods=['GET', 'POST'])
def index():
    name_form = NameForm()
    if name_form.validate_on_submit():
        name = name_form.name.data
        return render_template('hello.html', name=name)
    return render_template('index.html', form=name_form)

HTML 模板示例:

{% extends "base.html" %}

{% block content %}
    <h1>My App</h1>

    <form method="POST" action="{{ url_for('index') }}">
        {{ form.csrf_token }}
        {{ form.name.label }} {{ form.name() }}
        {{ form.submit() }}
    </form>
{% endblock %}

注意,在表单中需要添加 csrf_token 字段进行 CSRF 防护。

表单验证

通过 Flask Web 表单,可以轻松地实现各种表单验证。WTForms 提供了许多常用的验证器,例如 DataRequired(不能为空)、Length(长度范围)、Email(电子邮件格式)、EqualTo(相等)等等。可以在定义表单字段时使用这些验证器。

示例:

class LoginForm(FlaskForm):
    username = StringField('Username', validators=[DataRequired(), Length(1, 20)])
    password = PasswordField('Password', validators=[DataRequired()])
    remember = BooleanField('Remember me')
    submit = SubmitField('Log in')

在路由函数中,要验证是否提交了表单并且该表单是否合法。你可以使用 validate_on_submit() 方法来判断表单是否被提交,并且 Flask Web 表单会自动检查所有的验证器,如果有任何一个验证失败则表单将不会被接受。

示例:

@app.route('/login', methods=['GET', 'POST'])
def login():
    form = LoginForm()
    if form.validate_on_submit():
        # 用户登录操作...
        flash('Login requested for user {}, remember_me={}'.format(
            form.username.data, form.remember.data))
        return redirect(url_for('index'))
    return render_template('login.html', title='Sign In', form=form)

HTML 模板示例:

{% extends "base.html" %}

{% block content %}
    <h1>Sign In</h1>
    <form action="{{ url_for('login') }}" method="POST" role="form">
        {{ form.hidden_tag() }}

        <div class="form-group{% if form.username.errors %} has-error{% endif %}">
            {{ form.username.label }} {{ form.username(class="form-control") }}
            {% for error in form.username.errors %}
                <span class="help-block">{{ error }}</span>
            {% endfor %}
        </div>

        <div class="form-group{% if form.password.errors %} has-error{% endif %}">
            {{ form.password.label }} {{ form.password(class="form-control") }}
            {% for error in form.password.errors %}
                <span class="help-block">{{ error }}</span>
            {% endfor %}
        </div>

        <div class="checkbox">
            <label>
                {{ form.remember(class="") }} Remember me
            </label>
        </div>

        {{ form.submit(class="btn btn-primary") }}
    </form>
{% endblock %}

总结

这就是 Flask Web 表单的使用方法。使用 Flask Web 表单以及 WTForms,可以轻松创建并验证 Web 表单,并且可以避免由于用户输入错误而导致的程序崩溃。如果你已经熟悉 Flask,那么使用 Flask Web 表单将会非常轻松简单。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python中Flask Web 表单的使用方法介绍 - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • 一个基于flask的web应用诞生 记录用户账户登录状态(6)

    以下是“一个基于flask的web应用诞生 记录用户账户登录状态(6)”的完整攻略: 1. 添加用户注销功能 在用户登录成功后,我们需要给出注销的入口。在html文件中添加以下代码,链接到注销路由: {% if current_user.is_authenticated %} <li class="nav-item"> &lt…

    Flask 2023年5月15日
    00
  • 使用Django和Flask获取访问来源referrer

    获取访问来源referrer是一个很有用的功能,它可以让我们查看访问者是从哪个页面跳转而来。在Django和Flask中,获取referrer的方法也是不同的,下面我会分别提供两个完整的攻略来实现这个功能。 Django中获取referrer的方法 Django中获取referrer的方法比较简单,我们直接在视图函数中获取request.META属性中的HT…

    Flask 2023年5月16日
    00
  • nodejs微信开发之接入指南

    下面是对于“nodejs微信开发之接入指南”的详细讲解,以及两条示例说明。 Node.js微信开发之接入指南 一、基础知识 1.申请微信公众号 首先,我们需要在微信公众平台上申请一个公众号。 2.配置开发者工具 登录微信公众平台后,在开发者中心中配置开发者工具。这里需要设置服务器配置和公众号设置。 3.节点服务器配置 在开发者工具中,需要设置一个节点服务器,…

    Flask 2023年5月16日
    00
  • flask + pymysql操作Mysql数据库的实例

    下面是使用 Flask 和 PyMySQL 操作 MySQL 数据库的完整攻略,包含两条示例说明。 安装 PyMySQL 使用 PyMySQL 操作 MySQL 数据库需要先安装 PyMySQL 库,可以通过以下命令在命令行中安装: pip install pymysql 创建 Flask 应用 首先,需要创建一个 Flask 应用。可以通过以下代码创建一个…

    Flask 2023年5月16日
    00
  • flask使用session保存登录状态及拦截未登录请求代码

    下面是“flask使用session保存登录状态及拦截未登录请求代码”的完整攻略,包含两条示例说明。 什么是Session Session 是指用户与Web应用间的一次会话,可以用来存储在整个会话过程中需要跨越请求和响应之间一直使用的数据。 在 Flask 中,可以使用 session 对象保存用户会话数据。session 对象是一个相当有用的、用于临时存储…

    Flask 2023年5月16日
    00
  • Flask框架URL管理操作示例【基于@app.route】

    下面我将为您详细讲解”Flask框架URL管理操作示例【基于@app.route】”的完整攻略,其中包括两条示例说明。 Flask框架URL管理操作示例【基于@app.route】 在Flask框架中,基于@app.route装饰器可以实现对URL的管理操作。使用这个装饰器,我们可以非常方便地指定URL地址,并将其与相应的函数绑定起来。下面是两个具体的示例:…

    Flask 2023年5月16日
    00
  • flask 实现上传图片并缩放作为头像的例子

    这里有两个示例说明:实现在 Flask 应用中上传图片并缩放作为头像。 示例 1:上传图片并保存到本地 from flask import Flask, request, redirect from werkzeug.utils import secure_filename app = Flask(__name__) app.config[‘UPLOAD_F…

    Flask 2023年5月16日
    00
  • Flask实现跨域请求的处理方法

    Flask实现跨域请求的处理方法可以通过设置HTTP响应头的方式来实现。以下是完整攻略: 1. 前置知识 了解跨域请求的概念和原理;掌握HTTP响应头的相关知识;掌握python Flask框架的基础知识。 2. 方法一:使用flask-cors扩展 首先需要安装flask-cors扩展,flask-cors是Flask中解决跨域访问问题的扩展库。使用以下命…

    Flask 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部