个性化阅读
专注于IT技术分析

Python 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类, 该类被视为所有与表单相关的操作的父类。

下面列出了标准表单字段。

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 =’Submit’> html表单元素。

考虑以下示例。

例子

在此示例中, 我们将使用flask WTF模块创建一个表单。首先, 我们将创建一个名为forms.py的表单类, 并将这些表单元素导入模块formexample.py中。

forms.py

from flask_wtf import Form
from wtforms import TextField, IntegerField, TextAreaField, SubmitField, RadioField, SelectField
from wtforms import validators, ValidationError

class 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, flash
from forms import ContactForm
app = 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

赞(0)
未经允许不得转载:srcmini » Python Flask-WTF用法示例

评论 抢沙发

评论前必须登录!