一 安裝wtformshtml
pip install wtformsapp
二 導入相關模塊及對象函數
from wtforms import Form, widgets, validators from wtforms.fields import simple
三 定義表單類post
# 登錄表單 class LoginForm(Form): name = simple.StringField( label=u'用戶名', validators=[ validators.DataRequired(message=u'用戶名不能爲空'), validators.Length(min=3, max=8, message=u'用戶名長度必須大於%(min)d且小於%(max)d') ], widget=widgets.TextInput(), render_kw={'class': 'form-control'} ) pwd = simple.PasswordField( label=u'密碼', validators=[ validators.DataRequired(message=u'密碼不能爲空'), validators.Length(min=3, max=8, message=u'密碼至少大於3個字符'), validators.Regexp(regex="\d+", message=u'密碼必須是數字') ], widget=widgets.PasswordInput(), render_kw={'class': 'form-control'} ) class Meta: csrf = False def validate_pwd(self, *args, **kwargs): pass
四 在視圖函數中將表單對象傳給模板進行渲染ui
@app.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'GET': form = LoginForm() return render_template('login.html', form=form) else: form = LoginForm(request.form) if form.validate(): else: print(form.errors) return render_template('login.html', form=form)
五 在模板中展現spa
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form action="" method="post" novalidate> <p>{{ form.name.label }} {{ form.name }} {{ form.name.errors.0 }}</p> <p>{{ form.pwd.label }} {{ form.pwd }} {{ form.pwd.errors.0 }}</p> <input type="submit" value="提交"> </form> </body> </html>
界面展現code