📖 Scenario: You are building a simple Flask web app that handles user requests. Sometimes you want to send users to a different page, and sometimes you want to stop the request with an error.
🎯 Goal: Build a Flask app with routes that use redirect to send users to another page and abort to stop requests with an error code.
📋 What You'll Learn
Create a Flask app instance named app
Create a route /home that returns the text 'Welcome Home!'
Create a route /go-home that redirects to /home using redirect and url_for
Create a route /secret that aborts with a 403 Forbidden error using abort
💡 Why This Matters
🌍 Real World
Redirects help guide users to the right pages, like after login. Abort stops unauthorized access with proper error codes.
💼 Career
Understanding redirect and abort is essential for web developers to control user flow and handle errors gracefully in web apps.
Progress0 / 4 steps
1
Set up Flask app and home route
Import Flask from flask and create a Flask app instance called app. Then create a route /home that returns the string 'Welcome Home!'.
Flask
Hint
Use @app.route('/home') to create the route and define a function home that returns the welcome text.
2
Import redirect and url_for
Import redirect and url_for from flask to prepare for redirecting users.
Flask
Hint
Add redirect and url_for to the import statement from flask.
3
Create a redirect route
Create a route /go-home that uses redirect and url_for to send the user to the /home route.
Flask
Hint
Use @app.route('/go-home') and define go_home that returns redirect(url_for('home')).
4
Create a route that aborts with 403 error
Import abort from flask. Then create a route /secret that aborts the request with a 403 Forbidden error using abort(403).
Flask
Hint
Import abort and create a route /secret that calls abort(403) inside its function.
Practice
(1/5)
1. What does the redirect function do in a Flask application?
easy
A. Sends the user to a different URL
B. Stops the request and shows an error code
C. Returns a JSON response
D. Renders an HTML template
Solution
Step 1: Understand the purpose of redirect
The redirect function is used to send the user to a different URL in the browser.
Step 2: Compare with other functions
Unlike abort which stops the request with an error, redirect changes the page location.
Final Answer:
Sends the user to a different URL -> Option A
Quick Check:
redirect = Send user to new URL [OK]
Hint: Redirect sends users to new pages, abort shows errors [OK]
Common Mistakes:
Confusing redirect with abort
Thinking redirect stops the request
Assuming redirect returns HTML directly
2. Which of the following is the correct way to import and use abort in Flask?
easy
A. import flask.abort; abort(404)
B. import abort from flask; abort(404)
C. from flask import abort; abort['404']
D. from flask import abort; abort(404)
Solution
Step 1: Check correct import syntax
In Flask, functions like abort are imported using from flask import abort.
Step 2: Check correct usage
The abort function is called with parentheses and an integer status code, e.g., abort(404).
Final Answer:
from flask import abort; abort(404) -> Option D
Quick Check:
Correct import and call syntax = from flask import abort; abort(404) [OK]
Hint: Use 'from flask import abort' and call abort(code) [OK]
Common Mistakes:
Using wrong import syntax
Calling abort with brackets instead of parentheses
Trying to import abort with 'import abort from flask'
3. What will be the output when this Flask route is accessed?
The '/' route calls redirect('/welcome'), sending the browser to '/welcome'.
Step 2: Analyze the '/welcome' route
The '/welcome' route returns the string 'Hello, welcome!'. So the browser shows this text.
Final Answer:
Displays 'Hello, welcome!' in the browser -> Option B
Quick Check:
Redirect leads to '/welcome' which returns greeting [OK]
Hint: Redirect sends user to new route which returns the message [OK]
Common Mistakes:
Thinking redirect returns text directly
Expecting JSON instead of plain text
Assuming redirect causes error or crash
4. Identify the error in this Flask code snippet:
from flask import Flask, abort
app = Flask(__name__)
@app.route('/secret')
def secret():
abort(403)
return 'You should not see this'
medium
A. The return statement after abort is unreachable
B. abort must be called with a string, not a number
C. abort cannot be used inside route functions
D. Missing parentheses in abort call
Solution
Step 1: Understand abort behavior
The abort(403) immediately stops the request and sends a 403 error response.
Step 2: Check code after abort
The return statement after abort is never reached, so it is unreachable code.
Final Answer:
The return statement after abort is unreachable -> Option A
Quick Check:
Code after abort is ignored [OK]
Hint: Code after abort() won't run; it's unreachable [OK]
Common Mistakes:
Thinking abort needs string argument
Believing abort can't be used in routes
Forgetting abort stops execution immediately
5. You want to redirect users to a login page if they are not authenticated, otherwise show their dashboard. Which Flask code snippet correctly uses redirect and abort to handle this?
hard
A. if not user_authenticated:
abort(401)
else:
return redirect('/dashboard')
B. if user_authenticated:
return redirect('/login')
else:
abort(200)
C. if not user_authenticated:
return redirect('/login')
else:
return 'Welcome to your dashboard!'
D. if user_authenticated:
abort(404)
else:
return redirect('/login')
Solution
Step 1: Understand user authentication logic
If the user is not authenticated, they should be sent to the login page using redirect('/login').
Step 2: Handle authenticated users
If authenticated, show the dashboard message directly with a return string.
Step 3: Check abort usage
Using abort for normal redirects or success codes is incorrect; abort is for errors.
Final Answer:
if not user_authenticated:
return redirect('/login')
else:
return 'Welcome to your dashboard!' -> Option C
Quick Check:
Redirect unauthenticated, show dashboard if authenticated [OK]
Hint: Redirect unauthenticated users, return dashboard text if authenticated [OK]
Common Mistakes:
Using abort for normal redirects
Aborting with success codes like 200
Redirecting authenticated users to login
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.