📖 Scenario: You are building a simple Flask web app that shows a personalized greeting to the logged-in user.
🎯 Goal: Create a Flask app that uses the current_user object to display the username on the homepage.
📋 What You'll Learn
Create a Flask app with Flask-Login installed
Set up a user loader and a User class
Use the current_user object to get the logged-in user's username
Display the username on the homepage
💡 Why This Matters
🌍 Real World
Web apps often need to know who is logged in to personalize content and control access.
💼 Career
Understanding how to use current_user is essential for building secure and user-friendly Flask web applications.
Progress0 / 4 steps
1
Set up Flask app and User class
Create a Flask app instance called app and define a User class with an __init__ method that takes id and username as parameters. Also, import Flask and flask_login.
Flask
Hint
Start by creating the Flask app and a User class that inherits from UserMixin.
2
Configure Flask-Login and user loader
Create a LoginManager instance called login_manager and initialize it with app. Then, define a user loader function called load_user that takes user_id and returns a User object with id=user_id and username='TestUser'.
Flask
Hint
Use LoginManager to manage user sessions and define a user loader function.
3
Create a route that uses current_user
Create a route for '/' using @app.route. Inside the view function called home, return a string that says f"Hello, {current_user.username}!". Import current_user from flask_login.
Flask
Hint
Use current_user.username inside the route to greet the user.
4
Add secret key and run the app
Set app.secret_key to 'secret123' and add the code to run the app with app.run(debug=True).
Flask
Hint
Set a secret key for sessions and add the code to run the Flask app.
Practice
(1/5)
1. What does the current_user object represent in a Flask app?
easy
A. A list of all users in the database
B. The admin user only
C. The user who is currently logged in
D. A random user from the database
Solution
Step 1: Understand the purpose of current_user
The current_user object is provided by Flask-Login to represent the user who is currently logged in to the app.
Step 2: Compare options with this meaning
Only the user who is currently logged in correctly describes current_user as the user currently logged in. Other options describe unrelated concepts.
Final Answer:
The user who is currently logged in -> Option C
Quick Check:
current_user = logged-in user [OK]
Hint: Remember: current_user means the active logged-in user [OK]
Common Mistakes:
Thinking current_user is a list of users
Confusing current_user with admin user only
Assuming current_user is random
2. Which import is required to use current_user in a Flask app?
easy
A. from flask_login import current_user
B. from flask import current_user
C. import current_user from flask
D. from flask_login import login_user
Solution
Step 1: Identify the correct module for current_user
The current_user object is part of the Flask-Login extension, so it must be imported from flask_login.
Step 2: Check the import syntax
from flask_login import current_user uses the correct syntax: from flask_login import current_user. Other options either import from the wrong place or use incorrect syntax.
Final Answer:
from flask_login import current_user -> Option A
Quick Check:
Import current_user from flask_login [OK]
Hint: Import current_user from flask_login, not flask [OK]
Common Mistakes:
Importing current_user from flask instead of flask_login
What will be the output if a logged-in user has username 'Alice'?
medium
A. Hello, Alice!
B. Hello, current_user!
C. Hello, None!
D. Error: current_user not defined
Solution
Step 1: Understand the use of @login_required and current_user
The decorator @login_required ensures only logged-in users can access the route. current_user.username accesses the username of the logged-in user.
Step 2: Substitute the username value
Since the logged-in user's username is 'Alice', the returned string will be "Hello, Alice!".
Final Answer:
Hello, Alice! -> Option A
Quick Check:
Logged-in username shown correctly [OK]
Hint: Use @login_required to safely access current_user.username [OK]
Common Mistakes:
Forgetting @login_required causes errors
Using current_user without .username
Expecting literal 'current_user' in output
4. What is the likely cause of this error in a Flask app?
RuntimeError: Working outside of request context.
Code snippet:
print(current_user.is_authenticated)
medium
A. User is not logged in
B. Missing import of current_user
C. Flask app not running
D. Trying to access current_user outside a request or route
Solution
Step 1: Understand the error message
The error "Working outside of request context" means code is trying to use request-specific objects like current_user outside a web request or route function.
Step 2: Identify cause related to current_user
Accessing current_user must happen inside a route or request context. Printing it outside causes this runtime error.
Final Answer:
Trying to access current_user outside a request or route -> Option D
Quick Check:
current_user needs request context [OK]
Hint: Use current_user only inside routes or request context [OK]
Common Mistakes:
Assuming missing import causes this error
Thinking user login status causes this error
Believing app not running causes this error
5. You want to show a special message only to logged-in users using current_user. Which code snippet correctly checks login status before showing the message?
hard
A. if current_user:
print('Welcome back!')
else:
print('Please log in.')
B. if current_user.is_authenticated:
print('Welcome back!')
else:
print('Please log in.')
C. if current_user.logged_in:
print('Welcome back!')
else:
print('Please log in.')
D. if current_user.is_active:
print('Welcome back!')
else:
print('Please log in.')
Solution
Step 1: Identify the correct property to check login status
The current_user object has a property is_authenticated that returns True if the user is logged in.
Step 2: Verify the code snippet uses is_authenticated properly
if current_user.is_authenticated:
print('Welcome back!')
else:
print('Please log in.') uses current_user.is_authenticated correctly to decide which message to print. Other options use incorrect or non-existent properties.
Final Answer:
if current_user.is_authenticated:
print('Welcome back!')
else:
print('Please log in.') -> Option B
Quick Check:
Use is_authenticated to check login [OK]
Hint: Check current_user.is_authenticated for login status [OK]
Common Mistakes:
Using current_user.logged_in instead of is_authenticated
Checking current_user directly without property
Confusing is_active with login status
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.