Python Flask框架基础(四)表单

生成表单

在HTML中,表单通过<form>标签创建,表单中使用<input>标签表示各种输入字段,<label>标签用来定义标签文字。例如下面的HTML表单:

<form method="post">
    <label for="username">Username</label><br>
    <input type="text" name="username" placeholder="Héctor Rivera"><br>
    <label for="password">Password</label><br>
    <input type="password" name="password" placeholder="19001130"><br>
    <input id="remember" name="remember" type="checkbox" checked>
    <label for="remember"><small>Remember me</small></label><br>
    <input type="submit" name="submit" value="Log in">
</form>

渲染后的效果如下:
请添加图片描述

WTForms是一个使用Python编写的表单库,它使得表单的定义、验证(服务器端)和处理变得非常轻松。

WTForms支持在Python中使用类定义表单,然后直接通过类定义生成对应的HTML代码,这种方式更方便且表单更易于重用。因此,除非是非常简单的程序,否则不会在模板中直接使用HTML编写表单。Flask-WTF集成了WTForms,使用它可以在Flask中更加方便地使用WTForms。

当使用WTForms创建表单时,表单由Python自定义类表示(例如下面的LoginForm类)这个类继承从WTForms导入的Form基类。一个表单由若干输入字段组成,这些字段分别用表单类的类属性(例如username、password)来表示。每个字段属性通过实例化WTForms提供的字段类表示。字段属性的名称将作为对应HTML<input>元素的name属性及id属性值。

例如下面的代码会生成前面一样的表单:

### 文件forms.py ###
from wtforms import Form, StringField, PasswordField, BooleanField, SubmitField
from wtforms.validators import DataRequired, Length
class LoginForm(Form):
    username = StringField('Username', validators=[DataRequired()])
    password = PasswordField('Password', validators=[DataRequired(), Length(8, 128)])
    remember = BooleanField('Remember me')
    submit = SubmitField('Log in')

### 文件app.py ###
from flask import Flask, render_template
import os
from forms import LoginForm

app = Flask(__name__)
app.secret_key = "secret string"
app.secret_key = os.getenv('SECRET_KEY', 'secret string')

@app.route('/basic')
def basic():
    form = LoginForm()
    return render_template('basic.html', form=form)

### 文件basic.html ###
<!DOCTYPE html>
<form method="post">
    {
   {
    form.csrf_token }}
    {
   {
    form.username.label }}<br>
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值