1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
| from flask import Flask, request, render_template from wtforms.fields import simple, core from wtforms import validators from wtforms import Form
app = Flask(__name__)
class LoginForm(Form): username = simple.StringField( label="用户名", # 标签标记 validators=[ validators.DataRequired(message="用户名不能为空"), validators.Length(min=3, max=10, message="用户名必须%(min)d-%(max)d个字符") ], # 校验条件 可迭代对象 id="user_id", # 标签ID default=None, # 默认值 widget=None, # 默认组件 render_kw={"class": "my_login"} # 模板渲染配置信息 ) password = simple.PasswordField( label="密码", validators=[ validators.DataRequired(message="密码不能为空"), validators.Length(min=6, max=12, message="密码必须%(min)d-%(max)d个字符") ], id="pwd_id", render_kw={"class": "my_login"} ) repassword = simple.PasswordField( label="确认密码", validators=[validators.EqualTo(fieldname="password", message="两次输入密码不一致")] ) gender = core.RadioField( label="性别", coerce=int, choices=( (1, "男"), (2, "女") ), default=1 )
@app.route('/', methods=["GET", "POST"]) def hello_world(): lf = LoginForm() if request.method == "POST": lf = LoginForm(request.form) if lf.validate(): return lf.data.get("username") return render_template("login.html", wtf = lf)
if __name__ == '__main__': app.run()
|