簡體   English   中英

Flask WTForm 驗證

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM