flask框架表單模型Form並新增驗證
阿新 • • 發佈:2018-12-10
異常:ImportError: cannot import name ‘ForkingMixIn’
示例
(register.html)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form method="POST"> {{ form.csrf_token }} {% for msg in get_flashed_messages() %} <p>{{msg}}</p> {% endfor %} <p>{{ form.username.label }}:</p>{{ form.username }} {% for msg in form.username.errors %} {{msg}} {% endfor %} <p>{{ form.password.label }}:</p>{{ form.password }} {% for msg in form.password.errors %} {{msg}} {% endfor %} <p>{{ form.password2.label }}:</p>{{ form.password2 }} {% for msg in form.password2.errors %} {{msg}} {% endfor %} <p>{{ form.submit }}</p> </form> </body> </html>
(app.py)
# _*_ coding:utf-8 _*_ from flask import Flask, render_template, redirect, url_for, session, flash from flask_wtf import Form from wtforms import StringField, PasswordField, SubmitField from wtforms.validators import DataRequired, EqualTo app = Flask(__name__) app.config["SECRET_KEY"] = "abcdefgh12344ijklmn904opq" @app.route("/") def index(): return redirect(url_for("register")) class RegisterForm(Form): """定義表單類""" username = StringField(label=u"使用者名稱", validators=[DataRequired(u"使用者名稱不能為空")]) password = PasswordField(label=u"密碼", validators=[DataRequired(u"密碼不能為空")]) password2 = PasswordField(label=u"驗證密碼", validators=[DataRequired(u"驗證密碼不能為空"), EqualTo("password", u"兩次密碼不一樣")]) submit = SubmitField(label=u"提交") @app.route("/register", methods=["GET", "POST"]) def register(): form = RegisterForm() if form.validate_on_submit(): """驗證通過""" username = form.username.data password = form.password.data passwor2d = form.password2.data session["username"] = username return redirect(url_for("welcome")) else: flash("歡迎註冊!") return render_template("register.html", form=form) @app.route("/welcome") def welcome(): username = session.get("username", "Stranger") return "%s 註冊成功!" % username if __name__ == '__main__': app.run(debug=True)