本文概述
- 为什么WTF有用?
- 安装Flask-WTF
为什么WTF有用? 由于以下因素, WTF很有用。
- 表单元素与请求对象一起从客户端发送到服务器端。服务器端脚本需要重新创建表单元素, 因为客户端表单元素与服务器端要使用的变量之间没有直接映射。
- 无法实时呈现HTML表单数据。
安装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中的numpy.append()使用例子
- 蓝桥杯|蓝桥杯系列6——python技巧
- Android初学第84天
- Android初学第83天
- Android初学第79天
- Android初学第82天
- Android初学第80天
- Android初学第81天
- Android初学第73天