📖 Scenario: You are building a simple Flask web app where users can register with their email addresses. To ensure the email is valid, you want to implement an email verification pattern.This project guides you through setting up the data, configuration, core logic, and completion of the email verification feature.
🎯 Goal: Build a Flask app that accepts user email input, checks if the email format is valid using a regular expression, and displays a message indicating whether the email is valid or not.
📋 What You'll Learn
Create a Flask app with a route to accept email input
Use a regular expression to verify the email format
Display a success message if the email is valid
Display an error message if the email is invalid
💡 Why This Matters
🌍 Real World
Email verification is a common feature in web apps to ensure users provide valid contact information before accessing services.
💼 Career
Understanding how to implement email validation and user input handling in Flask is essential for backend web development roles.
Progress0 / 4 steps
1
DATA SETUP: Create a Flask app and import necessary modules
Write code to import Flask, request, and render_template from flask. Then create a Flask app instance called app.
Flask
Hint
Use app = Flask(__name__) to create the app instance.
2
CONFIGURATION: Define a regular expression pattern for email validation
Create a variable called email_pattern and assign it the regular expression string r"^[\w\.-]+@[\w\.-]+\.\w+$" to match valid email formats.
Flask
Hint
The regex checks for characters before and after '@' and a domain suffix.
3
CORE LOGIC: Create a route to handle email input and validate it
Write a Flask route for '/' that accepts GET and POST methods. Inside the route function verify_email, get the email from request.form with key 'email'. Use the re module to check if the email matches email_pattern. Return render_template('result.html', message=message) where message is 'Valid email!' if it matches or 'Invalid email!' if not.
Flask
Hint
Use @app.route decorator and request.form.get('email', '') to get the email.
4
COMPLETION: Add the HTML template to display the email input form and result message
Create a simple HTML form in a file named templates/result.html that shows an input field named email and a submit button. Below the form, display the message variable passed from Flask inside a paragraph tag.
Flask
Hint
Use a form with method POST and display the message variable inside a paragraph.
Practice
(1/5)
1. What is the main purpose of email verification in a Flask application?
easy
A. To store user data securely in the database
B. To confirm that the user owns the provided email address
C. To speed up the login process
D. To encrypt the user's password
Solution
Step 1: Understand email verification purpose
Email verification is used to confirm that the user actually owns the email they provided during signup.
Step 2: Differentiate from other security tasks
Encrypting passwords and speeding login are different tasks unrelated to email verification.
Final Answer:
To confirm that the user owns the provided email address -> Option B
Quick Check:
Email verification = Confirm ownership [OK]
Hint: Email verification confirms user email ownership [OK]
Common Mistakes:
Confusing email verification with password encryption
Thinking it speeds up login
Assuming it stores data securely
2. Which Flask library is commonly used to create timed tokens for email verification?
easy
A. flask_sqlalchemy
B. flask_login
C. itsdangerous
D. flask_mail
Solution
Step 1: Identify token generation library
The itsdangerous library provides URLSafeTimedSerializer to create timed tokens.
Step 2: Differentiate from other Flask extensions
flask_sqlalchemy manages databases, flask_login handles user sessions, and flask_mail sends emails but does not create tokens.
Final Answer:
itsdangerous -> Option C
Quick Check:
Token creation = itsdangerous [OK]
Hint: Use itsdangerous for timed token creation [OK]
Common Mistakes:
Choosing flask_mail for token creation
Confusing flask_login with token generation
Selecting flask_sqlalchemy incorrectly
3. Given this Flask code snippet, what will verify_token(token) return if the token is expired?
B. Missing secret key in serializer initialization
C. max_age parameter is invalid in loads()
D. Using dumps() instead of loads() to verify
Solution
Step 1: Check token generation and usage
The token is generated inside generate_token but not stored or passed outside.
Step 2: Verify token usage scope
At verification, token is used but not defined in that scope, causing a NameError.
Final Answer:
Token variable is undefined at verification -> Option A
Quick Check:
Undefined token variable causes error [OK]
Hint: Ensure token variable is defined before verification [OK]
Common Mistakes:
Ignoring variable scope for token
Thinking secret key is missing
Misusing max_age parameter
5. You want to implement email verification in Flask so that users receive a link with a token that expires after 24 hours. Which approach correctly combines token creation, sending email, and verification?
hard
A. Generate token without secret key, send email, verify token ignoring expiration
B. Store plain email in database, send email without token, verify by matching email only
C. Send token as plain text in email body, verify token with max_age=3600
D. Generate token with URLSafeTimedSerializer, send email with token link, verify token with max_age=86400
Solution
Step 1: Create token with expiration
Use URLSafeTimedSerializer with a secret key to generate a token that expires after 86400 seconds (24 hours).
Step 2: Send email with token link and verify properly
Send the token inside a URL link in the email. Verify the token using loads() with max_age=86400 to enforce expiration.
Final Answer:
Generate token with URLSafeTimedSerializer, send email with token link, verify token with max_age=86400 -> Option D
Quick Check:
Token creation + email + 24h expiry = Generate token with URLSafeTimedSerializer, send email with token link, verify token with max_age=86400 [OK]
Hint: Use max_age=86400 for 24h token expiry [OK]
Common Mistakes:
Not using tokens in email links
Ignoring token expiration
Sending tokens without secret key
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.