Flask

Co jsou Blueprints? Blueprint je ve Flasku něco jako routes, ale rozšířitelné o to, že je možné soubory "separovat" do vlastních adresářů, a dělat si tak ve věcech pořádek.

Takže prvně si aplikaci rozčleníme jako package, tzn. dáme ji do vlastniho adresáře. Naše "apka" bude pojmenovaná blueapp a bude mít dva adresáře s routami. Adresář api a site. Struktura bude tato:

.
├── blueapp
│   ├── api
│   │   └── routes.py
│   ├── __init__.py
│   └── site
│       └── routes.py
└── run.py

Spouštěč aplikace bude soubor run.py:

run.py
from blueapp import create_app

app = create_app()

if __name__ == "__main__":
        app.run()

V souboru init.py, se odehrává největší "magic", a to sice většina importů:

blueapp/__init__.py
from flask import Flask
from .api.routes import api
from .site.routes import site

def create_app():
    app = Flask(__name__)

    app.register_blueprint(api)
    app.register_blueprint(site)

    return(app)

Soubory api/routes.py a api/routes.py jsou podobné a používaji knihovnu Blueprint, tak aby mohly přistupovat k souborům ve svých adresářích:

blueapp/api/routes.py
from flask import Blueprint

api = Blueprint('api', __name__, url_prefix='/api')

@api.route('/getdata')
def get_data():
    return '<h1>jsi na /api/getdata !</h1>'
blueapp/site/routes.py
from flask import Blueprint

site = Blueprint('site', __name__)

@site.route('/')
def index():
    return '<h1>Jsi na / </h1>'

Když aplikaci spustím, tak přes curl dostávám:

curl http://127.0.0.1:5000/
<h1>Jsi na / </h1>

curl http://127.0.0.1:5000/api/getdata
<h1>jsi na /api/getdata !</h1>