I'm having trouble understanding how to split a flask app into multiple files.
I'm creating a web service and I want to split the api's into different files (AccountAPI.py, UploadAPI.py, ...), just so I don't have one huge python file.
I've read that you can do this with Blueprints, but I'm not entirely sure that route is the right one for me.
Ultimately I want to run one Main python file and include other files so that when it runs, they are considered one big file.
For example if I have Main.py and AccountAPI.py I want to be able to do this:
from flask import Flask import AccountAPI app = Flask(__name__) @app.route("/") def hello(): return "Hello World!" if __name__ == "__main__": app.run()
@app.route("/account") def accountList(): return "list of accounts"
I know with this example it obviously won't work, but is it possible to do something like that?
Yes, Blueprints are the right way to do it. What you are trying to do can be achieved like this:
from flask import Flask from AccountAPI import account_api app = Flask(__name__) app.register_blueprint(account_api) @app.route("/") def hello(): return "Hello World!" if __name__ == "__main__": app.run()
from flask import Blueprint account_api = Blueprint('account_api', __name__) @account_api.route("/account") def accountList(): return "list of accounts"
If this is an option, you might consider using different URL prefixes for the different APIs/Blueprints in order to cleanly separate them. This can be done with a slight modification to the above
For further documentation, you may also have a look at the official docs.
Blueprint you can add your routes in the
app.py routes __init__.py index.py users.py
from flask import Blueprint routes = Blueprint('routes', __name__) from .index import * from .users import *
from flask import render_template from . import routes @routes.route('/') def index(): return render_template('index.html')
from flask import render_template from . import routes @routes.route('/users') def users(): return render_template('users.html')
from routes import * app.register_blueprint(routes)
If you want to add a new route file, say
accounts.py, you just need to create the file
accounts.py in the
routes directory, just like
users.py, then import it in the
from .accounts import *