Flask é um pequeno framework web escrito em Python. É classificado como um microframework porque não requer ferramentas ou bibliotecas particulares, mantendo um núcleo simples, porém, extensível. Não possui camada de abstração de banco de dados, validação de formulário ou quaisquer outros componentes onde bibliotecas de terceiros preexistentes fornecem funções comuns. No entanto, o Flask oferece suporte a extensões que podem adicionar recursos do aplicativo como se fossem implementados no próprio Flask. Existem extensões para mapeadores objeto-relacional, validação de formulário, manipulação de upload, várias tecnologias de autenticação aberta e várias ferramentas comuns relacionadas ao framework.

Aplicações que utilizam o framework Flask incluem a própria página da comunidade de desenvolvedores,Página da comunidade Flask o Pinterest e o LinkedIn.What challenges has Pinterest encountered with Flask?Rachel Sanders: Developing Flask Extensions - PyCon 2014

Arquitetura O Flask é classificado como um microframework porque fornece apenas os componentes essenciais para o desenvolvimento de aplicações web, permitindo que o desenvolvedor escolha bibliotecas adicionais conforme as necessidades do projeto. O framework segue a especificação Web Server Gateway Interface (WSGI), que define uma interface padrão entre aplicações Python e servidores web.

A arquitetura é baseada principalmente em dois projetos: o Werkzeug, responsável pelo roteamento, tratamento de requisições e respostas HTTP, e o mecanismo de templates Jinja, utilizado para gerar páginas HTML de forma dinâmica.

Componentes O microframework Flask é baseado nos projetos Pocoo, Werkzeug e Jinja2.

Werkzeug Werkzeug é uma biblioteca de utilitários para a linguagem de programação Python, em outras palavras, um kit de ferramentas para aplicativos Web Server Gateway Interface (WSGI), e é licenciada sob uma Licença BSD. Werkzeug pode realizar objetos de software para funções de solicitação, resposta e utilidade. Ele pode ser usado para construir um framework de software customizado em cima dele e suporta Python 2.7, 3.5 e posteriores.

Jinja

Jinja, também da Ronacher, é um mecanismo de template para a linguagem de programação Python e está licenciado sob uma Licença BSD. Semelhante ao framework web Django, ele lida com modelos em uma sandbox.

Exemplo O código abaixo mostra uma aplicação web simples que imprime na tela do navegador "Olá mundo!": from flask import Flask app = Flask(__name__)

@app.route("/") def hello(): return "Olá mundo!"

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

Ver também Django (framework web)

Extensões Embora possua um núcleo reduzido, o Flask dispõe de um amplo ecossistema de extensões mantidas pela comunidade. Entre as mais utilizadas estão Flask-SQLAlchemy, que integra o framework ao SQLAlchemy para acesso a bancos de dados relacionais; Flask-Login, destinado ao gerenciamento de autenticação de usuários; Flask-WTF, que facilita a criação e validação de formulários; e Flask-Migrate, utilizado para controle de migrações de banco de dados.

Empresas Diversas empresas e organizações utilizam o Flask no desenvolvimento de aplicações web, APIs e serviços internos. Devido à sua arquitetura modular e à facilidade de integração com outras bibliotecas Python, o framework é frequentemente empregado na construção de microsserviços e aplicações de pequeno e médio porte. Entre as organizações que já utilizaram ou utilizam o Flask em seus projetos estão Pinterest, Zillow, Patreon e Brilliant. O framework também é amplamente adotado em ambientes acadêmicos, projetos de pesquisa e startups para o desenvolvimento rápido de protótipos e serviços web.

Aplicações O Flask é empregado no desenvolvimento de diversos tipos de aplicações web em python, incluindo APIs REST, aplicações web tradicionais, microsserviços, dashboards interativos e protótipos. Sua flexibilidade permite sua utilização tanto em projetos de pequeno porte quanto em sistemas mais complexos quando combinado com outras extensões.

Categoria:Frameworks de aplicações web em Python