$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'}), 200Extensions
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