Challenge - 5 Problems
Flask Validation Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ component_behavior
intermediate2:00remaining
What happens when a Flask-WTF form fails validation?
Consider a Flask-WTF form with a required field. What is the behavior when the form is submitted with that field empty?
Flask
from flask_wtf import FlaskForm from wtforms import StringField from wtforms.validators import DataRequired class MyForm(FlaskForm): name = StringField('Name', validators=[DataRequired()]) # In the route handler: form = MyForm() if form.validate_on_submit(): result = 'Valid' else: result = 'Invalid'
Attempts:
2 left
💡 Hint
Think about what happens when a required field is empty in a form validation.
✗ Incorrect
When a required field is empty, Flask-WTF's validate_on_submit() returns False and the errors dictionary contains messages explaining which fields failed validation.
📝 Syntax
intermediate1:30remaining
Which validator syntax is correct for checking an email field in Flask-WTF?
You want to validate that a form field contains a valid email address. Which of the following validator lists is correct?
Flask
from flask_wtf import FlaskForm from wtforms import StringField from wtforms.validators import DataRequired, Email class EmailForm(FlaskForm): email = StringField('Email', validators=___)
Attempts:
2 left
💡 Hint
Validators must be called as functions to create instances.
✗ Incorrect
Validators in WTForms must be instantiated by calling them with parentheses. So DataRequired() and Email() are correct, while DataRequired or Email alone are just references to the classes.
❓ state_output
advanced2:00remaining
What is the value of form.errors after submitting invalid data?
Given this Flask-WTF form and submission with empty 'username' and 'password' fields, what does form.errors contain?
Flask
from flask_wtf import FlaskForm from wtforms import StringField, PasswordField from wtforms.validators import DataRequired class LoginForm(FlaskForm): username = StringField('Username', validators=[DataRequired()]) password = PasswordField('Password', validators=[DataRequired()]) form = LoginForm(data={'username': '', 'password': ''}) form.validate() errors = form.errors
Attempts:
2 left
💡 Hint
DataRequired validator adds a specific error message when the field is empty.
✗ Incorrect
When fields fail the DataRequired validator, the errors dictionary contains the field names as keys and a list of error messages like 'This field is required.'
🔧 Debug
advanced2:30remaining
Why does this Flask-WTF form always validate even with empty input?
Examine the code below. Why does form.validate_on_submit() always return True even if the 'email' field is empty?
Flask
from flask_wtf import FlaskForm from wtforms import StringField from wtforms.validators import Email class EmailForm(FlaskForm): email = StringField('Email', validators=[Email()]) form = EmailForm(data={'email': ''}) valid = form.validate()
Attempts:
2 left
💡 Hint
Think about what Email() validator does with empty input.
✗ Incorrect
The Email() validator only checks the format if the field has data. It does not require the field to be filled. To require input, DataRequired() must be added.
🧠 Conceptual
expert3:00remaining
How to combine multiple validators to enforce a required email field with length limits?
You want a Flask-WTF form field that requires an email, checks it is valid, and limits length between 6 and 50 characters. Which validator list achieves this?
Flask
from flask_wtf import FlaskForm from wtforms import StringField from wtforms.validators import DataRequired, Email, Length class ContactForm(FlaskForm): email = StringField('Email', validators=___)
Attempts:
2 left
💡 Hint
Each validator has a specific role; combine them to cover all requirements.
✗ Incorrect
DataRequired() ensures the field is not empty, Email() checks format, and Length() enforces character limits. Option C includes all three correctly.