We use cookies to understand how the site is used and to display ads. Analytics and advertising only run after you accept. You can change your choice anytime. Privacy policy

Skip to content
devvkit
$devvkit learn --librarie flask-guide

Flask Guide

[python][web][api]
Python
Install
pip install flask

Flask is the Python equivalent of Express.js: minimal, flexible, and well-documented.

Extension ecosystem: Flask-SQLAlchemy, Flask-Login, Flask-WTF, Flask-RESTful.

Flask 3.x supports async views, type annotations, and improved error handling.

Setup

Basic app· Minimal Flask app.
from flask import Flask
app = Flask(__name__)

@app.route('/')
def home():
    return '<h1>Hello</h1>'

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

Routing

Route variable· Dynamic URL segment.
@app.route('/users/<int:user_id>')
def get_user(user_id: int):
    return f'User {user_id}'
Multiple methods· GET and POST.
@app.route('/users', methods=['GET', 'POST'])
def users():
    if request.method == 'POST':
        return {'id': 1, **request.get_json()}, 201
    return {'users': []}

Request Handling

Query params· Access query string.
@app.route('/search')
def search():
    q = request.args.get('q', '')
    return {'query': q}
JSON response· Return JSON.
from flask import jsonify
@app.route('/status')
def status():
    return jsonify({'status': 'ok'}), 200

Extensions

Blueprint· Modular routes.
from flask import Blueprint
auth = Blueprint('auth', __name__, url_prefix='/auth')
@auth.route('/login', methods=['POST'])
def login(): ...
app.register_blueprint(auth)
SQLAlchemy· Database setup.
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db'
db.init_app(app)

Testing

Test client· Integration test.
import pytest
from app import app
@pytest.fixture
def client():
    app.config['TESTING'] = True
    return app.test_client()

def test_home(client):
    resp = client.get('/')
    assert resp.status_code == 200