[英]Flask WTForm validation
我使用 WTForms 中的內置規則添加了驗證。 但是,驗證失敗。 它沒有顯示 email 字段的消息並接受文本框中的任何隨機字符串。 如何測試驗證是否有效?
from flask import Flask, app, render_template, request
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField, validators
from wtforms.fields.simple import PasswordField
from wtforms.validators import Email, InputRequired, length, EqualTo
app = Flask(__name__)
app.config['SECRET_KEY']="PQrs12t46uv"
class MyForm(FlaskForm):
email = StringField(label=('Email Id'), validators=[ InputRequired("Enter the valid email address"), Email(), length(min=6, max=10)])
password=PasswordField(label="Password", validators=[InputRequired()])
confirm_password=PasswordField("Confirm Password", validators=[EqualTo('password',message="Should be same as the password.")])
submit = SubmitField(label=('Register'))
@app.route('/')
def base():
form = MyForm()
return render_template('formvalidation.html', form=form)
@app.route('/submitform', methods=["GET","POST"])
def submitform():
if request.method == 'POST':
return 'form accepted successfully.'
if __name__=="__main__":
app.run(debug=True)
# formvalidation.html
<!DOCTYPE html>
<html>
<head><title>My website</title></head>
<body>
<h1>Login form</h1>
<form action="http://127.0.0.1:5000/submitform" method="post">
<p>{{form.email.label}}: {{form.email}}</p>
<p>{{form.password.label}}: {{form.password}}</p>
<p>{{form.confirm_password.label}}: {{form.confirm_password}}</p>
<p>{{form.submit}}</p>
</form>
</body>
</html>
在您提交的表格submitform
中,
@app.route('/submitform', methods=["GET","POST"])
def submitform():
if request.method == 'POST':
return 'form accepted successfully.'
request.method == 'POST'
將僅檢查表單是否已提交,而不檢查憑據是否已驗證。 為確保驗證有效,您可以添加條件if form.validate():
。 如果滿足驗證,這將返回“True”。 我使用的快捷方式是if form.validate_on_submit():
。 這將檢查表單是否已提交並且驗證是否滿足一個條件,而不是檢查方法是否等於“POST”並且表單是否已被驗證。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.