Bird
Raised Fist0
Flaskframework~10 mins

Extension initialization pattern in Flask - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to create a Flask extension instance.

Flask
from flask_sqlalchemy import SQLAlchemy

db = [1]()
Drag options to blanks, or click blank then click option'
ASQLAlchemy
BFlask
CFlaskApp
DApp
Attempts:
3 left
💡 Hint
Common Mistakes
Using Flask instead of SQLAlchemy to create the extension instance.
Forgetting the parentheses to call the class.
2fill in blank
medium

Complete the code to initialize the extension with the Flask app.

Flask
from flask import Flask

app = Flask(__name__)
db = SQLAlchemy()
db.[1](app)
Drag options to blanks, or click blank then click option'
Arun_app
Binit_app
Cstart_app
Dcreate_app
Attempts:
3 left
💡 Hint
Common Mistakes
Using run_app or start_app which do not exist.
Trying to pass the app to the extension constructor instead of using init_app.
3fill in blank
hard

Fix the error in the extension initialization pattern by completing the blank.

Flask
from flask import Flask
from flask_mail import Mail

mail = Mail()
app = Flask(__name__)
[1] = app
mail.init_app(app)
Drag options to blanks, or click blank then click option'
Amail
Bmail_app
CMail
Dapp
Attempts:
3 left
💡 Hint
Common Mistakes
Assigning the extension instance instead of the Flask app.
Using a variable name that is not defined.
4fill in blank
hard

Fill both blanks to complete the factory function initializing the extension.

Flask
from flask import Flask
from flask_migrate import Migrate

migrate = Migrate()

def create_app():
    app = Flask(__name__)
    migrate.[1](app, [2])
    return app
Drag options to blanks, or click blank then click option'
Ainit_app
Bdb
Capp
Dstart
Attempts:
3 left
💡 Hint
Common Mistakes
Using start instead of init_app.
Passing the app twice or passing the wrong variable.
5fill in blank
hard

Fill all three blanks to complete the extension initialization with app factory pattern.

Flask
from flask import Flask
from flask_login import LoginManager

login_manager = LoginManager()

def create_app():
    app = Flask(__name__)
    login_manager.[1](app)
    login_manager.login_view = '[2]'
    login_manager.login_message_category = '[3]'
    return app
Drag options to blanks, or click blank then click option'
Ainit_app
Blogin
Cinfo
Dhome
Attempts:
3 left
💡 Hint
Common Mistakes
Forgetting to call init_app.
Setting login_view to a wrong or non-existent route.
Using an incorrect message category.

Practice

(1/5)
1. What is the main purpose of the init_app() method in Flask extensions?
easy
A. To initialize the extension with a Flask app instance after creation
B. To create a new Flask app instance
C. To run the Flask app server
D. To define routes inside the Flask app

Solution

  1. Step 1: Understand extension creation

    Extensions are created separately from the Flask app to keep code organized.
  2. Step 2: Role of init_app()

    This method connects the extension to the Flask app instance, usually inside a factory function.
  3. Final Answer:

    To initialize the extension with a Flask app instance after creation -> Option A
  4. Quick Check:

    init_app() connects extension to app [OK]
Hint: Remember: create extension first, then call init_app() [OK]
Common Mistakes:
  • Thinking init_app() creates the app
  • Confusing init_app() with running the server
  • Trying to define routes inside init_app()
2. Which of the following is the correct way to initialize a Flask extension using the extension initialization pattern?
easy
A. ext.init_app(app)
B. ext = Extension(app)
C. ext = Extension(); ext.init_app(app)
D. app = Flask(); ext = Extension(app); ext.init_app()

Solution

  1. Step 1: Create extension without app

    Extensions are first created without passing the app instance.
  2. Step 2: Call init_app(app) to bind

    After creation, call init_app() with the app to initialize the extension.
  3. Final Answer:

    ext = Extension(); ext.init_app(app) -> Option C
  4. Quick Check:

    Separate creation and init with app [OK]
Hint: Create extension first, then call init_app(app) [OK]
Common Mistakes:
  • Passing app to constructor directly
  • Calling init_app() without app argument
  • Calling init_app() before creating extension
3. Given this code snippet inside a Flask app factory, what will be the output when accessing the route /?
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

def create_app():
    app = Flask(__name__)
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///:memory:'
    db.init_app(app)

    @app.route('/')
    def index():
        return 'DB Initialized'

    return app

app = create_app()
medium
A. 404 Not Found
B. AttributeError: 'NoneType' object has no attribute 'route'
C. RuntimeError: application not registered on db instance
D. DB Initialized

Solution

  1. Step 1: Check extension initialization

    The db extension is created outside and initialized inside create_app() with db.init_app(app).
  2. Step 2: Confirm route and return value

    The route / returns the string 'DB Initialized'. Since the app and extension are properly set up, this will work.
  3. Final Answer:

    DB Initialized -> Option D
  4. Quick Check:

    Proper init_app() means route works [OK]
Hint: If init_app() called, extension works and route returns expected output [OK]
Common Mistakes:
  • Forgetting to call init_app(app)
  • Returning wrong string in route
  • Misunderstanding extension setup timing
4. Identify the error in this Flask extension initialization code:
from flask import Flask
from flask_mail import Mail

mail = Mail()

def create_app():
    app = Flask(__name__)
    mail.init_app()
    return app
medium
A. Missing app argument in mail.init_app()
B. Mail extension should be created inside create_app()
C. Flask app instance should be created after mail.init_app()
D. No error, code is correct

Solution

  1. Step 1: Check init_app() usage

    The init_app() method requires the Flask app instance as an argument.
  2. Step 2: Identify missing argument

    In the code, mail.init_app() is called without passing app, causing an error.
  3. Final Answer:

    Missing app argument in mail.init_app() -> Option A
  4. Quick Check:

    init_app() needs app argument [OK]
Hint: Always pass app to init_app() [OK]
Common Mistakes:
  • Calling init_app() without app
  • Creating extension inside factory unnecessarily
  • Confusing order of app and extension creation
5. You want to create a Flask app factory that supports multiple extensions using the extension initialization pattern. Which code snippet correctly initializes two extensions db and login_manager inside the factory?
hard
A. db = SQLAlchemy(app) login_manager = LoginManager(app) def create_app(): app = Flask(__name__) return app
B. db = SQLAlchemy() login_manager = LoginManager() def create_app(): app = Flask(__name__) db.init_app(app) login_manager.init_app(app) return app
C. def create_app(): app = Flask(__name__) db = SQLAlchemy(app) login_manager = LoginManager(app) return app
D. def create_app(): app = Flask(__name__) db = SQLAlchemy() login_manager = LoginManager() db.init_app() login_manager.init_app() return app

Solution

  1. Step 1: Create extensions outside factory

    Extensions should be created once outside the factory without app argument.
  2. Step 2: Initialize extensions inside factory

    Inside create_app(), call init_app(app) on each extension to bind them to the app.
  3. Final Answer:

    db = SQLAlchemy()\nlogin_manager = LoginManager()\ndef create_app():\n app = Flask(__name__)\n db.init_app(app)\n login_manager.init_app(app)\n return app -> Option B
  4. Quick Check:

    Create extensions once, init_app inside factory [OK]
Hint: Create extensions once, call init_app(app) inside factory [OK]
Common Mistakes:
  • Passing app to extension constructor outside factory
  • Calling init_app() without app argument
  • Creating extensions inside factory repeatedly
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