DEV Community

loading...

Modular Flask App with Blueprints

dendihandian profile image Dendi Handian ・Updated on ・1 min read

If your flask project started to grow larger and many features added, you should not write them in a single file. Flask has its own way to separate the features using the blueprints.

Basic Structure and Files

As the starter, we only have one file inside our project:

- project
  |_ app.py
Enter fullscreen mode Exit fullscreen mode

and the file is the simple flask app like this:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return 'Hello World!'

if __name__ == '__main__':
    app.run(debug=True)

Enter fullscreen mode Exit fullscreen mode

Creating Products and Stores Blueprints

For examples, let's create a folder named blueprints and also create the products_blueprints and stores_blueprints

- project
  |_ blueprints
     |_ products_blueprint.py
     |_ stores_blueprint.py
  |_ app.py
Enter fullscreen mode Exit fullscreen mode

and for the blueprints, let's make them simple like these:

blueprints/products_blueprints:

from flask import Blueprint, jsonify

products_blueprint = Blueprint('products_blueprint', __name__)

@products_blueprint.route('/api/products')
def product_list():
    return jsonify({'data': [{'id': 1, 'name': 'Cappucinno'}]})
Enter fullscreen mode Exit fullscreen mode

blueprints/stores_blueprints:

from flask import Blueprint, jsonify

stores_blueprint = Blueprint('stores_blueprint', __name__)

@stores_blueprint.route('/api/stores')
def store_list():
    return jsonify({'data': [{'id': 1, 'name': '4th Avenue Cafe'}]})
Enter fullscreen mode Exit fullscreen mode

Importing and Registering the Blueprints to Flask App

Let's modify the app.py to import the blueprints and register them to the app:

from flask import Flask

from blueprints.products_blueprint import products_blueprint
from blueprints.stores_blueprint import stores_blueprint

app = Flask(__name__)

@app.route('/')
def hello():
    return 'Hello World!'

app.register_blueprint(products_blueprint)
app.register_blueprint(stores_blueprint)

if __name__ == '__main__':
    app.run(debug=True)

Enter fullscreen mode Exit fullscreen mode

That's it. Try to run and access the api/products and api/stores to make sure it works.

Discussion (0)

pic
Editor guide