Python Flask-WTF用法示例

本文概述

  • 为什么WTF有用?
  • 安装Flask-WTF
WTF代表WT Forms, 旨在为用户提供交互式用户界面。 WTF是Python Flask的内置模块, 它提供了在Python FlaskWeb应用程序中设计表单的另一种方法。
为什么WTF有用? 由于以下因素, WTF很有用。
  • 表单元素与请求对象一起从客户端发送到服务器端。服务器端脚本需要重新创建表单元素, 因为客户端表单元素与服务器端要使用的变量之间没有直接映射。
  • 无法实时呈现HTML表单数据。
WT Forms是用于提供用户界面的灵活的表单呈现和验证库。
安装Flask-WTF 要使用WT表单, 我们需要安装flask-wtf库, 该库可以使用pip installer安装。
$ pip install flask-wtf

该模块包含一个Form类, 该类被视为所有与表单相关的操作的父类。
【Python Flask-WTF用法示例】下面列出了标准表单字段。
SN Form Field Description
1 TextField 它用于表示文本字段的HTML表单元素。
2 BooleanField 它用于表示复选框HTML表单元素。
3 DecimalField 它用于表示文本字段以显示带有小数的数字。
4 IntegerField 它用于表示文本字段以显示整数值。
5 RadioField 它用于表示单选按钮HTML表单元素。
6 SelectField 它用于表示选择表单元素。
7 TextAreaField 它用于表示文本区域表单元素。
8 PasswordField 它用于将密码作为用户输入的形式。
9 SubmitField 它提供了表示< input type =’ submit’ value =http://www.srcmini.com/’ Submit’ > html表单元素。
考虑以下示例。
例子
在此示例中, 我们将使用flask WTF模块创建一个表单。首先, 我们将创建一个名为forms.py的表单类, 并将这些表单元素导入模块formexample.py中。
forms.py
from flask_wtf import Formfrom wtforms import TextField, IntegerField, TextAreaField, SubmitField, RadioField, SelectFieldfrom wtforms import validators, ValidationErrorclass ContactForm(Form):name = TextField("Candidate Name ", [validators.Required("Please enter your name.")])Gender = RadioField('Gender', choices = [('M', 'Male'), ('F', 'Female')])Address = TextAreaField("Address")email = TextField("Email", [validators.Required("Please enter your email address."), validators.Email("Please enter your email address.")])Age = IntegerField("Age")language = SelectField('Programming Languages', choices = [('java', 'Java'), ('py', 'Python')])submit = SubmitField("Submit")

formexample.py
from flask import Flask, render_template, request, flashfrom forms import ContactFormapp = Flask(__name__)app.secret_key = 'development key'@app.route('/contact', methods = ['GET', 'POST'])def contact():form = ContactForm()if form.validate() == False:flash('All fields are required.')return render_template('contact.html', form = form)@app.route('/success', methods = ['GET', 'POST'])def success():return render_template("success.html")if __name__ == '__main__':app.run(debug = True)

contact.html
< !doctype html> < html> < body> < h2 style = "text-align: center; "> Registration Form< /h2> {% for message in form.name.errors %}< div> {{ message }}< /div> {% endfor %}{% for message in form.email.errors %}< div> {{ message }}< /div> {% endfor %}< form action = "http://localhost:5000/success" method = "POST"> {{ form.hidden_tag() }}< div style = "font-size:18px; " font-weight:bold; margin-left:150px; > {{ form.name.label }}< br> {{ form.name }}< br> {{ form.Gender.label }} {{ form.Gender }}{{ form.Address.label }}< br> {{ form.Address }}< br> {{ form.email.label }}< br> {{ form.email }}< br> {{ form.Age.label }}< br> {{ form.Age }}< br> {{ form.language.label}}< br> < br> {{ form.language }}< br> < br> {{ form.submit }}< /div> < /fieldset> < /form> < /body> < /html>

success.html
< !DOCTYPE html> < html> < head> < title> < /title> < /head> < body> < h1> Form posted successfully< /h1> < /body> < /html>

输出
Python Flask-WTF用法示例

文章图片

    推荐阅读