Bird
Raised Fist0
Flaskframework~10 mins

Custom status codes in Flask - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Custom status codes
Client sends request
↓
Flask route receives request
↓
Process request logic
↓
Create response with custom status code
↓
Send response back to client
↓
Client receives response with custom status code
The client sends a request, Flask processes it, then returns a response with a custom status code back to the client.
Execution Sample
Flask
from flask import Flask, jsonify
app = Flask(__name__)

@app.route('/custom')
def custom_status():
    return jsonify(message='Hello'), 202
This Flask route returns a JSON message with a custom status code 202 (Accepted).
Execution Table
StepActionStatus Code SetResponse ContentClient Receives
1Client sends GET /customN/AN/ARequest sent
2Flask route '/custom' calledN/AN/AWaiting for response
3Return jsonify with message and status 202202{"message": "Hello"}Response received
4Client processes response202{"message": "Hello"}Message shown with status 202
💡 Response sent with custom status code 202, ending request cycle
Variable Tracker
VariableStartAfter Step 3Final
status_codeNone202202
response_contentNone{"message": "Hello"}{"message": "Hello"}
Key Moments - 2 Insights
Why do we return a tuple with (response, status_code) in Flask?
Flask allows returning a tuple where the second item is the status code. This sets the HTTP status code explicitly, as shown in execution_table step 3.
Can we use any number as a custom status code?
You can use standard HTTP codes or custom ones, but it's best to use valid HTTP status codes. The example uses 202 which means 'Accepted'. See execution_table step 3.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what status code is set at step 3?
A404
B202
C200
D500
💡 Hint
Check the 'Status Code Set' column at step 3 in the execution_table.
At which step does the client receive the response?
AStep 3
BStep 4
CStep 1
DStep 2
💡 Hint
Look at the 'Client Receives' column to find when the response is received.
If we changed the status code to 404, what would change in the execution_table?
AThe client would send a different request
BThe 'Response Content' would change to an error message
CThe 'Status Code Set' at step 3 would be 404
DNothing would change
💡 Hint
Focus on the 'Status Code Set' column at step 3 in the execution_table.
Concept Snapshot
Flask lets you return a response with a custom status code by returning a tuple: (response, status_code).
Use jsonify() to send JSON data.
Example: return jsonify(message='Hi'), 202
The status code tells the client how to interpret the response.
Common codes: 200 OK, 404 Not Found, 202 Accepted.
Custom codes should follow HTTP standards.
Full Transcript
In Flask, you can send a custom status code by returning a tuple from your route function. The first item is the response data, often created with jsonify for JSON responses. The second item is the status code number, like 202 for Accepted. When a client sends a request, Flask runs the route function, creates the response with the custom status code, and sends it back. The client then receives the response and can act based on the status code. This lets you communicate more precise information about the request result beyond the default 200 OK.

Practice

(1/5)
1. What is the correct way to return a custom status code 450 from a Flask route?
easy
A. return "Error", 450
B. return 450, "Error"
C. return Response(status=450)
D. return make_response(450, "Error")

Solution

  1. Step 1: Understand Flask return tuple format

    Flask routes return a tuple with (response_body, status_code) to set custom status codes.
  2. Step 2: Match the tuple with custom code 450

    Returning "Error", 450 matches the format (body, status_code) correctly.
  3. Final Answer:

    return "Error", 450 -> Option A
  4. Quick Check:

    Tuple (body, status) = return "Error", 450 [OK]
Hint: Return (body, code) tuple to set custom status [OK]
Common Mistakes:
  • Swapping order of status and body in return tuple
  • Using Response without import or wrong parameters
  • Using make_response incorrectly
2. Which of the following is the correct syntax to return a JSON response with a custom status code 499 in Flask?
easy
A. return jsonify(message="Fail"), 499
B. return jsonify(message="Fail", status=499)
C. return jsonify(message="Fail", 499)
D. return jsonify(message="Fail").status_code(499)

Solution

  1. Step 1: Use jsonify to create JSON response

    jsonify returns a Response object with JSON content.
  2. Step 2: Return tuple with jsonify and status code

    To set custom status code, return (jsonify(...), status_code) tuple.
  3. Final Answer:

    return jsonify(message="Fail"), 499 -> Option A
  4. Quick Check:

    jsonify + tuple (response, code) = return jsonify(message="Fail"), 499 [OK]
Hint: Return (jsonify(...), code) tuple for JSON + custom code [OK]
Common Mistakes:
  • Passing status code inside jsonify arguments
  • Trying to call status_code as method
  • Incorrect tuple order or syntax
3. What will be the HTTP status code returned by this Flask route?
from flask import Flask
app = Flask(__name__)

@app.route('/test')
def test():
    return "Custom", 499
medium
A. 404
B. 200
C. 499
D. 500

Solution

  1. Step 1: Check the return statement in route

    The route returns a tuple ("Custom", 499), where 499 is the status code.
  2. Step 2: Flask uses the second tuple element as status code

    Flask sets HTTP status code to 499 as specified in the return tuple.
  3. Final Answer:

    499 -> Option C
  4. Quick Check:

    Return tuple second value = status code 499 [OK]
Hint: Second tuple value in return sets status code [OK]
Common Mistakes:
  • Assuming default 200 status code
  • Confusing return order
  • Thinking 499 is invalid and defaults to 500
4. Identify the error in this Flask route that tries to return a custom status code 499:
from flask import Flask
app = Flask(__name__)

@app.route('/error')
def error():
    return "Oops", status=499
medium
A. Route function must return a Response object
B. Custom status code 499 is not allowed in Flask
C. Missing jsonify for JSON response
D. Using 'status' keyword argument in return is invalid

Solution

  1. Step 1: Check return statement syntax

    Flask does not accept 'status' keyword in return statement directly.
  2. Step 2: Correct way is to return tuple (body, status_code)

    Use return "Oops", 499 instead of return "Oops", status=499.
  3. Final Answer:

    Using 'status' keyword argument in return is invalid -> Option D
  4. Quick Check:

    Return tuple (body, code) not keyword args [OK]
Hint: Return tuple (body, code), not keyword args [OK]
Common Mistakes:
  • Using status=code in return instead of tuple
  • Assuming Flask auto-detects status from keywords
  • Confusing with Response object parameters
5. You want to create a Flask route that returns a JSON message with a custom status code 460 only if a query parameter 'valid' is 'no'. Otherwise, return status 200 with a success message. Which code correctly implements this?
hard
A. from flask import Flask, request, jsonify app = Flask(__name__) @app.route('/check') def check(): if request.args.get('valid') == 'no': return jsonify(error="Invalid", status=460) return jsonify(message="OK")
B. from flask import Flask, request, jsonify app = Flask(__name__) @app.route('/check') def check(): if request.args.get('valid') == 'no': return jsonify(error="Invalid"), 460 return jsonify(message="OK"), 200
C. from flask import Flask, request, jsonify app = Flask(__name__) @app.route('/check') def check(): if request.args.get('valid') == 'no': return jsonify(error="Invalid").status_code = 460 return jsonify(message="OK")
D. from flask import Flask, request, jsonify app = Flask(__name__) @app.route('/check') def check(): if request.args.get('valid') == 'no': return jsonify(error="Invalid") return jsonify(message="OK"), 200

Solution

  1. Step 1: Check conditional logic for query parameter

    Use request.args.get('valid') to check if it equals 'no'.
  2. Step 2: Return JSON with custom status code 460 if invalid

    Return (jsonify(...), 460) tuple to set custom status code correctly.
  3. Step 3: Return success JSON with status 200 otherwise

    Return (jsonify(...), 200) tuple for success response.
  4. Final Answer:

    Correct conditional returns with tuples for custom and normal codes -> Option B
  5. Quick Check:

    Return (jsonify, code) tuples for all cases [OK]
Hint: Return (jsonify(...), code) tuples for all responses [OK]
Common Mistakes:
  • Passing status inside jsonify arguments
  • Trying to set status_code attribute directly
  • Missing status code tuple on error response
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard