Bird
Raised Fist0
Flaskframework~5 mins

Custom middleware creation in Flask - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is middleware in Flask?
Middleware in Flask is a piece of code that runs before or after the main request handler. It can modify requests or responses, like a helpful assistant checking or changing things as they pass through.
Click to reveal answer
intermediate
How do you create custom middleware in Flask?
You create a class with a __call__ method that takes the WSGI environment and start_response function. Inside, you can add your code before or after calling the next app in the chain.
Click to reveal answer
intermediate
What does the __call__ method do in Flask middleware?
The __call__ method makes the middleware class behave like a function. Flask calls it with request details, letting your middleware process or change the request or response.
Click to reveal answer
beginner
Why use middleware in a Flask app?
Middleware helps add features like logging, authentication, or modifying requests without changing your main app code. It keeps your app clean and organized.
Click to reveal answer
intermediate
How do you add your custom middleware to a Flask app?
Wrap your Flask app with your middleware class when creating the app. For example, app.wsgi_app = YourMiddleware(app.wsgi_app). This tells Flask to use your middleware.
Click to reveal answer
What method must a Flask middleware class implement to be callable?
Ahandle
B__call__
Crun
D__init__
Where do you insert your middleware in a Flask app?
AWrap the app's wsgi_app attribute
BInside the route functions
CIn the app.config dictionary
DIn the templates folder
What can middleware modify in Flask?
AHTML templates
BDatabase schema
CRequests and responses
DStatic files
Which of these is NOT a typical use of middleware?
AModifying headers
BAuthenticating users
CLogging requests
DRendering HTML templates
What arguments does the __call__ method in Flask middleware receive?
Aenviron and start_response
Brequest and response
Capp and config
Dself and app
Explain how to create and add custom middleware to a Flask app.
Think about how middleware acts like a filter around your app.
You got /4 concepts.
    Describe three common uses of middleware in Flask applications.
    Middleware helps with tasks before or after your main app runs.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the main purpose of creating custom middleware in a Flask application?
      easy
      A. To run code before and after each request is processed by Flask
      B. To define new routes and views in the Flask app
      C. To replace Flask's built-in request handling completely
      D. To create database models for the application

      Solution

      1. Step 1: Understand middleware role

        Middleware runs code around request processing, before and after Flask handles requests.
      2. Step 2: Compare options

        Only To run code before and after each request is processed by Flask describes this behavior. Other options describe unrelated tasks.
      3. Final Answer:

        To run code before and after each request is processed by Flask -> Option A
      4. Quick Check:

        Middleware purpose = run code around requests [OK]
      Hint: Middleware wraps requests to add extra processing [OK]
      Common Mistakes:
      • Confusing middleware with route creation
      • Thinking middleware replaces Flask core
      • Mixing middleware with database models
      2. Which of the following is the correct way to define a custom middleware class in Flask?
      easy
      A. class MyMiddleware: def __init__(self, app): self.app = app def __call__(self, environ, start_response): return self.app(environ, start_response)
      B. def MyMiddleware(app): return app
      C. class MyMiddleware: def handle_request(self): pass
      D. class MyMiddleware: def __init__(self): pass

      Solution

      1. Step 1: Check middleware class structure

        Middleware must accept the app in __init__ and implement __call__ with environ and start_response.
      2. Step 2: Validate options

        Only class MyMiddleware: def __init__(self, app): self.app = app def __call__(self, environ, start_response): return self.app(environ, start_response) matches this pattern correctly. Others miss __call__ or parameters.
      3. Final Answer:

        Correct middleware class with __init__ and __call__ methods -> Option A
      4. Quick Check:

        Middleware class needs __call__ method [OK]
      Hint: Middleware class must implement __call__(environ, start_response) [OK]
      Common Mistakes:
      • Omitting __call__ method
      • Not passing app to __init__
      • Using function instead of class
      3. Given this middleware code, what will be printed when a request is made?
      class LoggerMiddleware:
          def __init__(self, app):
              self.app = app
          def __call__(self, environ, start_response):
              print('Before request')
              response = self.app(environ, start_response)
              print('After request')
              return response
      
      app.wsgi_app = LoggerMiddleware(app.wsgi_app)
      medium
      A. Only After request printed
      B. Only Before request printed
      C. No output printed
      D. Before request printed, then After request printed

      Solution

      1. Step 1: Analyze __call__ method

        Prints 'Before request', calls app, then prints 'After request'.
      2. Step 2: Understand call order

        Both prints happen on each request, before and after app call.
      3. Final Answer:

        Before request printed, then After request printed -> Option D
      4. Quick Check:

        Prints before and after app call [OK]
      Hint: Middleware __call__ runs code before and after app call [OK]
      Common Mistakes:
      • Thinking only one print runs
      • Confusing order of prints
      • Assuming prints happen outside __call__
      4. Identify the error in this middleware code snippet:
      class BadMiddleware:
          def __init__(self, app):
              self.app = app
          def __call__(self, request):
              print('Middleware active')
              return self.app(request)
      medium
      A. Missing __init__ method to accept app
      B. __call__ method has wrong parameters; should be (environ, start_response)
      C. Middleware class should not print anything
      D. The return statement should be outside __call__

      Solution

      1. Step 1: Check __call__ method signature

        WSGI middleware __call__ must accept (environ, start_response), not (request).
      2. Step 2: Validate other parts

        __init__ is correct, printing is allowed, return inside __call__ is correct.
      3. Final Answer:

        __call__ method has wrong parameters; should be (environ, start_response) -> Option B
      4. Quick Check:

        Middleware __call__ signature = (environ, start_response) [OK]
      Hint: Middleware __call__ needs environ and start_response params [OK]
      Common Mistakes:
      • Using Flask request object instead of WSGI params
      • Omitting start_response parameter
      • Misplacing return statement
      5. You want to create middleware that adds a custom header 'X-Hello: World' to every response. Which code snippet correctly implements this?
      hard
      A. class HeaderMiddleware: def __init__(self, app): self.app = app def __call__(self, environ, start_response): response = self.app(environ, start_response) response.headers['X-Hello'] = 'World' return response
      B. class HeaderMiddleware: def __init__(self, app): self.app = app def __call__(self, environ, start_response): start_response('200 OK', [('X-Hello', 'World')]) return self.app(environ, start_response)
      C. class HeaderMiddleware: def __init__(self, app): self.app = app def __call__(self, environ, start_response): def custom_start_response(status, headers, exc_info=None): headers.append(('X-Hello', 'World')) return start_response(status, headers, exc_info) return self.app(environ, custom_start_response)
      D. class HeaderMiddleware: def __init__(self, app): self.app = app def __call__(self, environ, start_response): environ['X-Hello'] = 'World' return self.app(environ, start_response)

      Solution

      1. Step 1: Understand WSGI header modification

        Headers are set by calling start_response with status and headers. To add headers, wrap start_response.
      2. Step 2: Check options for correct header addition

        class HeaderMiddleware: def __init__(self, app): self.app = app def __call__(self, environ, start_response): def custom_start_response(status, headers, exc_info=None): headers.append(('X-Hello', 'World')) return start_response(status, headers, exc_info) return self.app(environ, custom_start_response) wraps start_response to append header before calling original start_response. Others misuse start_response or response object.
      3. Final Answer:

        Wrap start_response to add header before calling original -> Option C
      4. Quick Check:

        Add headers by wrapping start_response [OK]
      Hint: Wrap start_response to add headers in middleware [OK]
      Common Mistakes:
      • Calling start_response twice incorrectly
      • Trying to modify response object directly in WSGI
      • Adding headers to environ instead of 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