What is the purpose of a login form in a Flask web application?
A login form collects user credentials like username and password to verify the user's identity before granting access to protected parts of the website.
Click to reveal answer
beginner
Which Flask extension is commonly used to manage user sessions and authentication?
Flask-Login is a popular extension that helps manage user sessions, handle login/logout, and protect routes that require authentication.
Click to reveal answer
intermediate
In Flask, how do you securely check if a user's password is correct?
You use password hashing functions like Werkzeug's generate_password_hash to store hashed passwords and check_password_hash to verify the entered password against the stored hash.
Click to reveal answer
beginner
What is the role of the @app.route decorator in creating a login form?
The @app.route decorator defines the URL endpoint for the login page and specifies which HTTP methods (GET, POST) the function will handle to display the form and process login data.
Click to reveal answer
beginner
Why should you use POST method instead of GET for submitting login forms?
POST hides the submitted data in the request body, making it more secure than GET, which appends data to the URL and can expose sensitive information like passwords.
Click to reveal answer
Which Flask function helps you protect routes so only logged-in users can access them?
A@login_required
B@app.route
Crender_template()
Dflash()
✗ Incorrect
The @login_required decorator from Flask-Login restricts access to routes to only authenticated users.
What does the function check_password_hash() do in Flask?
AHashes a new password
BChecks if a password matches a stored hash
CEncrypts user data
DCreates a user session
✗ Incorrect
check_password_hash() compares a plain password with a stored hashed password to verify if they match.
Which HTTP method should be used to submit login credentials securely?
APOST
BPUT
CGET
DDELETE
✗ Incorrect
POST sends data in the request body, keeping credentials hidden from the URL, unlike GET.
What is the main purpose of Flask-Login?
ATo create HTML forms
BTo style web pages
CTo manage user authentication and sessions
DTo connect to databases
✗ Incorrect
Flask-Login helps manage user login states and session handling.
Where do you define the URL path for the login page in Flask?
AIn the database
BIn the HTML template
CIn the CSS file
DUsing @app.route decorator
✗ Incorrect
The @app.route decorator sets the URL endpoint for the login view function.
Explain how to create a simple login form in Flask and verify user credentials.
Think about the steps from showing the form to logging the user in.
You got /5 concepts.
Describe why password hashing is important in login verification and how Flask supports it.
Consider what happens if someone steals your password database.
You got /5 concepts.
Practice
(1/5)
1. What is the main purpose of a login form in a Flask web application?
easy
A. To create database tables
B. To display images on the webpage
C. To collect username and password from users
D. To send emails automatically
Solution
Step 1: Understand the role of a login form
A login form is designed to collect user credentials like username and password.
Step 2: Identify the correct purpose in Flask context
In Flask, the login form collects these details to verify user identity before granting access.
Final Answer:
To collect username and password from users -> Option C
Quick Check:
Login form = collect credentials [OK]
Hint: Login forms always gather user credentials [OK]
Common Mistakes:
Confusing login form with other features like email or images
Thinking login form creates database tables
Assuming login form sends emails automatically
2. Which Flask code snippet correctly defines a route to display a login form using GET method?
easy
A. app.route('/login', methods=['GET'])\ndef login():\n return render_template('login.html')
B. app.route('/login', methods=['POST'])\ndef login():\n return render_template('login.html')
C. app.route('/login')\ndef login():\n return redirect('/home')
D. app.route('/login', methods=['DELETE'])\ndef login():\n return 'Delete method not allowed'
Solution
Step 1: Identify the correct HTTP method for showing a form
Login forms are usually shown with GET requests, so methods=['GET'] is correct.
Step 2: Check the route and function return
The route '/login' with methods=['GET'] returns the login.html template to display the form.
Final Answer:
app.route('/login', methods=['GET'])\ndef login():\n return render_template('login.html') -> Option A
Quick Check:
Show form = GET method [OK]
Hint: Use GET method to display forms in Flask routes [OK]
Common Mistakes:
Using POST method to show the form instead of GET
Not specifying methods list defaults to GET but unclear
Using DELETE method which is invalid for forms
3. Given this Flask login verification code snippet, what will be the output if username='admin' and password='1234' are submitted?
from flask import Flask, request, render_template_string
app = Flask(__name__)
@app.route('/login', methods=['POST'])
def login():
user = request.form.get('username')
pwd = request.form.get('password')
if user == 'admin' and pwd == '1234':
return 'Login successful'
else:
return 'Login failed'
medium
A. Login successful
B. Login failed
C. SyntaxError
D. No output
Solution
Step 1: Check the submitted username and password
The code compares user to 'admin' and pwd to '1234'. Both match the submitted values.
Step 2: Determine the returned response
Since both match, the function returns 'Login successful'.
Final Answer:
Login successful -> Option A
Quick Check:
Correct credentials = Login successful [OK]
Hint: Match input values exactly to get success message [OK]
Common Mistakes:
Confusing POST and GET methods for form data
Assuming wrong output when credentials match
Ignoring case sensitivity in username/password
4. Identify the error in this Flask login route code:
B. Missing 'methods' argument in @app.route decorator
C. Incorrect use of request.args instead of request.form
D. Using '=' instead of '==' in the if condition
Solution
Step 1: Check the if condition syntax
The code uses single '=' which is assignment, not comparison. It should be '==' to compare values.
Step 2: Verify other parts of the code
The methods argument is present, request.form is correctly used, and return statements exist.
Final Answer:
Using '=' instead of '==' in the if condition -> Option D
Quick Check:
Comparison needs '==' not '=' [OK]
Hint: Use '==' for comparisons, '=' is assignment [OK]
Common Mistakes:
Using '=' instead of '==' in conditions
Forgetting to specify POST method in route
Using request.args for POST form data
5. You want to create a Flask login system that locks out a user after 3 failed attempts. Which approach correctly combines login verification and attempt tracking?
hard
A. Use a global variable to count attempts and reset on successful login
B. Store attempt count in session and check before verifying credentials
C. Check attempts only after successful login to reset count
D. Ignore attempt count and always allow login attempts
Solution
Step 1: Understand where to store attempt count
Using session storage per user is best to track attempts individually without global conflicts.
Step 2: Implement logic to check attempts before verifying credentials
Check if attempts exceed 3 before allowing login verification to prevent further tries.
Step 3: Reset attempt count on successful login
Resetting attempts after success avoids locking out valid users.
Final Answer:
Store attempt count in session and check before verifying credentials -> Option B
Quick Check:
Session tracks attempts per user [OK]
Hint: Use session to track attempts and block after limit [OK]
Common Mistakes:
Using global variables causing shared count for all users
Resetting attempts only after success but not checking before login
Ignoring attempt limits and allowing unlimited tries
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.