Bird
Raised Fist0
Flaskframework~20 mins

Application factory pattern preview in Flask - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Flask Factory Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ component_behavior
intermediate
2:00remaining
What does the Flask app factory return?
Consider this Flask application factory function. What does it return when called?
Flask
from flask import Flask

def create_app():
    app = Flask(__name__)
    @app.route('/')
    def home():
        return 'Hello from factory!'
    return app
AA function that returns 'Hello from factory!'
BA Flask app instance ready to run
CA string 'Hello from factory!'
DNone
Attempts:
2 left
💡 Hint
Remember, the factory function creates and returns the Flask app object.
📝 Syntax
intermediate
2:00remaining
Identify the syntax error in this factory pattern code
Which option shows the syntax error in this Flask app factory snippet?
Flask
from flask import Flask

def create_app():
    app = Flask(__name__)
    @app.route('/')
    def home():
        return 'Welcome!'
    return app
AMissing parentheses in Flask(__name__)
BIndentation error in the home function
CNo syntax error
DMissing colon after def home()
Attempts:
2 left
💡 Hint
Check each line carefully for missing punctuation or indentation.
❓ state_output
advanced
2:00remaining
What is the output when running the app created by this factory?
Given this Flask app factory, what will be the output when accessing '/' route?
Flask
from flask import Flask

def create_app():
    app = Flask(__name__)
    @app.route('/')
    def home():
        return 'Factory says hi!'
    return app

app = create_app()
AFactory says hi!
B500 Internal Server Error
C404 Not Found error
DHello from factory!
Attempts:
2 left
💡 Hint
Look at the return value of the home route inside the factory.
🔧 Debug
advanced
2:00remaining
Why does this factory app raise an error on run?
This Flask app factory code raises an error when running. What is the cause?
Flask
from flask import Flask

def create_app():
    app = Flask(__name__)
    @app.route('/')
    def home():
        return 'Hi!'

app = create_app()

if __name__ == '__main__':
    app.run()
AThe factory function does not return the app instance
BMissing parentheses in app.run
CRoute decorator is outside the factory function
DFlask is not imported
Attempts:
2 left
💡 Hint
Check if the create_app function returns the app object.
🧠 Conceptual
expert
2:00remaining
Why use the application factory pattern in Flask?
Which option best explains the main advantage of using the application factory pattern in Flask?
AIt removes the need to import Flask in your code
BIt makes the app run faster by precompiling routes
CIt automatically generates HTML templates for routes
DIt allows creating multiple app instances with different configurations easily
Attempts:
2 left
💡 Hint
Think about flexibility and testing benefits.

Practice

(1/5)
1. What is the main purpose of the application factory pattern in Flask?
easy
A. To avoid using blueprints and extensions
B. To write all routes directly in the main script without functions
C. To automatically generate HTML templates
D. To create the Flask app inside a function for better configuration and testing

Solution

  1. Step 1: Understand the pattern's purpose

    The application factory pattern creates the Flask app inside a function instead of a global variable.
  2. Step 2: Benefits of this approach

    This allows flexible configuration, easier testing, and clean registration of extensions and blueprints.
  3. Final Answer:

    To create the Flask app inside a function for better configuration and testing -> Option D
  4. Quick Check:

    Application factory = create app in function [OK]
Hint: Remember: factory means 'make inside a function' [OK]
Common Mistakes:
  • Thinking app is created globally
  • Confusing with blueprint usage
  • Assuming it auto-generates templates
2. Which of the following is the correct way to define an application factory function in Flask?
easy
A. def create_app():\n app = Flask\n return app
B. app = Flask(__name__)\ndef create_app():\n return app
C. def create_app():\n app = Flask(__name__)\n return app
D. def create_app():\n return Flask

Solution

  1. Step 1: Check function definition and app creation

    The factory function must create a Flask instance inside it using Flask(__name__)
  2. Step 2: Verify return of the app instance

    The function should return the created app instance, not the class or a global variable.
  3. Final Answer:

    def create_app():\n app = Flask(__name__)\n return app -> Option C
  4. Quick Check:

    Factory returns new Flask instance [OK]
Hint: Create and return app inside function with Flask(__name__) [OK]
Common Mistakes:
  • Returning Flask class instead of instance
  • Using global app outside function
  • Not calling Flask with parentheses
3. Given this code snippet, what will print(app.config['DEBUG']) output?
def create_app():
    app = Flask(__name__)
    app.config['DEBUG'] = True
    return app

app = create_app()
print(app.config['DEBUG'])
medium
A. True
B. False
C. None
D. KeyError

Solution

  1. Step 1: Analyze config setting inside factory

    The factory sets app.config['DEBUG'] = True before returning the app.
  2. Step 2: Check printed value after app creation

    After calling create_app(), app.config['DEBUG'] is True, so printing it outputs True.
  3. Final Answer:

    True -> Option A
  4. Quick Check:

    Config set to True inside factory [OK]
Hint: Config set inside factory is available after app creation [OK]
Common Mistakes:
  • Assuming default DEBUG is False
  • Expecting KeyError for missing key
  • Confusing config with environment variables
4. Identify the error in this application factory code:
def create_app():
    app = Flask(__name__)
    app.register_blueprint(main)
    return app

app = create_app()

Assume main is a blueprint imported correctly.
medium
A. No error, code is correct
B. Missing app context push before registering blueprint
C. Blueprint must be registered before app creation
D. Blueprint registration should happen inside a separate function

Solution

  1. Step 1: Check blueprint registration timing

    Blueprints are registered on the app instance inside the factory function, which is correct.
  2. Step 2: Verify app context and function structure

    No app context push is needed for registration; the code is valid and follows the pattern.
  3. Final Answer:

    No error, code is correct -> Option A
  4. Quick Check:

    Blueprint registered inside factory is valid [OK]
Hint: Register blueprints inside factory before returning app [OK]
Common Mistakes:
  • Thinking app context is needed for registration
  • Trying to register blueprint before app exists
  • Separating registration unnecessarily
5. You want to add a Flask extension (e.g., Flask-Migrate) using the application factory pattern. Which approach is correct?
hard
A. Create the extension instance inside the factory function only
B. Initialize the extension globally, then call init_app(app) inside the factory
C. Initialize the extension after app creation outside the factory
D. Pass the app instance as a parameter to the extension constructor inside the factory

Solution

  1. Step 1: Understand extension initialization pattern

    Extensions are usually created globally without app, then initialized with app inside the factory using init_app(app).
  2. Step 2: Why not create inside factory?

    Creating inside factory loses global access; initializing outside factory after app creation breaks pattern.
  3. Final Answer:

    Initialize the extension globally, then call init_app(app) inside the factory -> Option B
  4. Quick Check:

    Global extension + init_app(app) inside factory [OK]
Hint: Create extension globally, init inside factory [OK]
Common Mistakes:
  • Creating extension instance inside factory only
  • Initializing extension outside factory after app creation
  • Passing app to extension constructor inside factory
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