⚗️ Flask Cheat Sheet

🧪 Site oficial do Flask (Documentação)

# Comando / Função / Parâmetro O que faz Exemplo
1pip install flaskInstala a biblioteca Flaskpip install flask
2Flask(__name__)Cria a instância da aplicaçãoapp = Flask(__name__)
3app.run()Inicia o servidor de desenvolvimentoapp.run(debug=True)
4flask runComando CLI para rodar o appflask run --host=0.0.0.0
5FLASK_APPVariável de ambiente para o arquivo principalexport FLASK_APP=app.py
6FLASK_ENVDefine o ambiente (development/production)export FLASK_ENV=development
7@app.route('/')Define uma rota básica@app.route('/')
8methods=['POST']Especifica métodos aceitos na rota@app.route('/login', methods=['GET', 'POST'])
9<variable>Variável dinâmica na URL@app.route('/user/<name>')
10<int:id>Conversor de tipo para inteiro na URL@app.route('/post/<int:id>')
11<float:val>Conversor de tipo para ponto flutuante@app.route('/tax/<float:val>')
12<path:subpath>Aceita barras na variável da URL@app.route('/file/<path:p>')
13url_for()Gera a URL para uma função específicaurl_for('login')
14redirect()Redireciona o usuário para outra URLreturn redirect(url_for('home'))
15request.argsDicionário com parâmetros da URL (?id=1)request.args.get('search')
16request.formDados enviados via formulário POSTrequest.form['username']
17request.jsonDados enviados em formato JSONrequest.json['email']
18request.filesArquivos enviados no uploadfile = request.files['foto']
19request.methodVerifica o método da requisição atualif request.method == 'POST':
20request.cookiesAcessa os cookies enviados pelo clienterequest.cookies.get('user_id')
21make_response()Cria um objeto de resposta manualmenteresp = make_response(render_template('ok.html'))
22render_template()Renderiza um arquivo HTML do Jinja2return render_template('index.html')
23jsonify()Retorna resposta JSON para APIsreturn jsonify({"status": 200})
24abort()Interrompe a requisição com código de erroabort(404)
25{{ value }}Exibe o valor de uma variável{{ user.name }}
26{% if %}Bloco condicional no template{% if user %}...{% endif %}
27{% for %}Loop para iterar listas no HTML{% for p in posts %}
28{% extends %}Herança de template pai{% extends "base.html" %}
29{% block %}Define área de conteúdo substituível{% block content %}{% endblock %}
30{% include %}Inclui um fragmento de template{% include "navbar.html" %}
31|safeRenderiza HTML sem escapar tags{{ html_content|safe }}
32sessionArmazena dados entre requisições (cookies)session['user'] = 'admin'
33app_context()Contexto da aplicação (uso fora de views)with app.app_context():
34gObjeto global temporário por requisiçãog.db = connect_db()
35current_appReferência à aplicação ativacurrent_app.config['DB']
36flash()Envia mensagens rápidas ao usuárioflash('Login realizado!')
37get_flashed_messages()Recupera mensagens flash no template{% for m in get_flashed_messages() %}
38app.configDicionário de configurações do appapp.config['SECRET_KEY'] = '123'
39app.config.from_pyfile()Carrega configs de um arquivo .pyapp.config.from_pyfile('config.py')
40app.config.from_envvar()Carrega configs de var. de ambienteapp.config.from_envvar('APP_SETTINGS')
41@app.before_requestExecuta antes de cada requisição@app.before_request def check_user():
42@app.after_requestExecuta após cada requisição@app.after_request def add_header(r):
43@app.teardown_requestExecuta ao fim, mesmo se houver erro@app.teardown_request def close_db(e):
44@app.errorhandler()Captura erros específicos (ex: 404)@app.errorhandler(404) def page_not_found(e):
45Blueprint()Cria um módulo/blueprint de rotasauth = Blueprint('auth', __name__)
46app.register_blueprint()Registra o blueprint no app principalapp.register_blueprint(auth_bp)
47url_prefixDefine prefixo para todas as rotas do BPapp.register_blueprint(api, url_prefix='/api')
48Flask-SQLAlchemyORM para banco de dadosdb = SQLAlchemy(app)
49Flask-MigrateMigrações de banco de dadosmigrate = Migrate(app, db)
50Flask-LoginGerenciamento de autenticaçãologin_manager.init_app(app)
51Flask-WTFIntegração com formulários WTFormsclass MyForm(FlaskForm):
52Flask-MailEnvio de e-mailsmail.send(msg)
53Flask-CORSHabilita Cross-Origin Resource SharingCORS(app)
54Flask-RESTfulFramework para construção de APIsapi.add_resource(User, '/user')
55db.ModelClasse base para modelosclass User(db.Model):
56db.Column()Define uma coluna na tabelaid = db.Column(db.Integer, primary_key=True)
57db.session.add()Adiciona objeto à sessão do bancodb.session.add(new_user)
58db.session.commit()Salva alterações permanentementedb.session.commit()
59db.session.rollback()Cancela alterações da sessão atualdb.session.rollback()
60Model.query.all()Busca todos os registrosUser.query.all()
61Model.query.get()Busca por IDUser.query.get(5)
62Model.query.filter_by()Filtra registros por chave/valorUser.query.filter_by(name='Leo')
63@app.cli.command()Cria um comando customizado de terminal@app.cli.command('create-db')
64secure_filename()Limpa nome de arquivo para uploadname = secure_filename(f.filename)
65send_from_directory()Serve arquivos de uma pastasend_from_directory('static', filename)
66app.test_client()Cria cliente para testes unitáriosclient = app.test_client()
67GETRecuperação de dadosmethods=['GET']
68POSTEnvio de novos dadosmethods=['POST']
69PUTAtualização completamethods=['PUT']
70PATCHAtualização parcialmethods=['PATCH']
71DELETERemoção de dadosmethods=['DELETE']
72200 OKSucesso padrãoreturn "OK", 200
73201 CreatedSucesso na criaçãoreturn "Novo", 201
74401 UnauthorizedErro de autenticaçãoabort(401)
75403 ForbiddenAcesso negadoabort(403)
76500 Server ErrorErro interno no servidorabort(500)