Flask interview question · Most asked
What is the application factory pattern in Flask and why use it?
Summary
An application factory is a create_app(config=None) function that creates and configures the Flask instance, initializes extensions and registers blueprints, instead of creating a global app at import time.
Longer Answer
Benefits: multiple app instances with different configs (tests vs production), no circular imports (extensions are created unbound and attached with init_app), and no side effects at import. flask --app 'myapp:create_app()' run and Gunicorn ('myapp:create_app()') both support factories.
Code Example
# myapp/__init__.py
from flask import Flask
from .extensions import db, migrate, login_manager
def create_app(config_object: str = "myapp.config.ProdConfig") -> Flask:
app = Flask(__name__)
app.config.from_object(config_object)
db.init_app(app)
migrate.init_app(app, db)
login_manager.init_app(app)
from .auth import bp as auth_bp
from .orders import bp as orders_bp
app.register_blueprint(auth_bp, url_prefix="/auth")
app.register_blueprint(orders_bp, url_prefix="/orders")
return app
Key Points
create_app()returns a configured app- Extensions use
ext.init_app(app) - Easy test configuration
- Avoids circular imports
Explanation
What interviewers look for
Linking the factory to testability and the init_app extension pattern.
Follow-up questions
- How do extensions access the app inside a factory?
More most-asked Flask questions
- How do Flask sessions work and what are their security implications?
- How do you use SQLAlchemy with Flask (Flask-SQLAlchemy 3.x)?
- What are Blueprints in Flask?
- Explain Flask's application context and request context.
- What is Flask and what does 'microframework' mean?
- How does routing work in Flask, including variable rules and HTTP methods?
- How do you access request data and build responses in Flask?
- How do you implement user authentication in Flask?