A web framework é uma biblioteca de código que torna o desenvolvimento da web mais rápido e fácil, fornecendo padrões comuns para construir aplicações web confiáveis, escaláveis e de fácil manutenção. Após o início dos anos 2000, os projetos profissionais de desenvolvimento web utilizam sempre um framework web existente, exceto em situações muito incomuns.
Por que os frameworks web são úteis?
Os frameworks web encapsulam o que os desenvolvedores aprenderam nos últimos vinte anos enquanto programavam sites e aplicações para a web. Os frameworks facilitam a reutilização de código para operações HTTP comuns e a estruturação de projetos para que outros desenvolvedores com conhecimento do framework possam rapidamente construir e manter a aplicação.
Ferramentas comuns de framework web
Frameworks fornecem funcionalidades em seu código ou através de extensões toperformam operações comuns necessárias para executar aplicações web. Estas operações comuns incluem:
- RoteamentoURL
- Manipulação e validação de formulários de entrada
- HTML, XML, JSON e outros formatos de saída com um motor de templates
- Configuração de conexão de banco de dados e manipulação de dados persistente através de um mapeador objeto-relacional (ORM)
- Segurança Web contra falsificação de requisição de sites cruzados (CSRF), SQL Injection,Cross-site Scripting (XSS) e outros ataques maliciosos comuns
- Session storage and retrieval
Nem todos os frameworks web incluem código para todas as funcionalidades acima.Frameworks caem no espectro desde a execução de um único caso de uso até o fornecimento de todas as funcionalidades conhecidas de frameworks web para cada desenvolvedor. Alguns frameworks adotam a abordagem “batteries-included” onde tudo possível vem em conjunto com o framework enquanto outros têm um pacote central mínimo que é passível de extensões fornecidas por outros pacotes.
Por exemplo, o framework de aplicação web do Django inclui a camada ORM do Django que permite que um desenvolvedor escreva um banco de dados relacional para ler, escrever, consultar e excluir operações em código Python ao invés de SQL.
alguns outros frameworks web como Flask e Pirâmide são mais fáceis de usar com bancos de dados não-relacionais incorporando bibliotecas Python externas. Existe um espectro entre funcionalidades mínimas com fácil extensibilidade numa ponta e incluindo tudo no framework com integração apertada na outra ponta.
Tenho que usar um framework web?
Se você usa ou não um framework web no seu projeto depende da sua experiência com desenvolvimento web e do que você está tentando realizar. Se você é um programador iniciante e apenas quer trabalhar em uma aplicação web como um projeto de aprendizagem, então um framework pode ajudá-lo a entender os conceitos listados acima, tais como roteamento de URL, manipulação de dados e autenticação que são comuns à maioria das aplicações web.
Por outro lado, se você é um programador experiente com experiência significativa em desenvolvimento web, você pode sentir que os frameworks existentes não atendem aos requisitos do seu projeto. Nesse caso, você pode misturar e combinar bibliotecas de código fonte como a Werkzeug forWSGI plumbing com seu próprio código para criar seu próprio framework. Ainda há muito espaço no ecossistema Python para novos frameworks para satisfazer as necessidades dos desenvolvedores web que não são atendidas por Django,Flask, Pyramid, Bottle andmany others.
Em resumo, se você precisa ou não usar um framework web para construir uma aplicação web depende da sua experiência e do que você está tentando realizar.Usar um framework web para construir uma aplicação web certamente não é necessário, mas facilitará a vida da maioria dos desenvolvedores em muitos casos.
Comparando frameworks web
Fale Python to Me teve um episódio de podcast com uma comparação detalhada dos frameworks Django,Flask, Tornado e Pyramid.
Você está curioso sobre como o código em um projeto Django é estruturado comparado com o Flask? Confira este tutorial da aplicação web Django e então veja a mesma aplicação construída com o Flask.
Existe também um repositório chamadocompare-python-web-frameworks onde a mesma aplicação web está sendo codificada com diferentes webframeworks Python, mecanismos de templates e mapeadores de objetos-relacionais.
Recursos do framework web
-
Building Your Own Python Web Framework é uma maneira incrível de aprender como o WSGI funciona e as muitas outras peças que se combinam para fazer frameworks web úteis para desenvolvedores web.
-
12 requisições por segondexamines como o framework web tradicionalmente síncronoFlask se compara a um framework assíncrono como o Sanic em um benchmark artificial e simples. Os resultados fazem parecer que o Sanic é muito mais rápido do que o Flask, mas com a adição de uma quantidade básica de funcionalidades para aprojectar, incluindo consultas a bases de dados e templates, os resultados ficam iguais. Miguel Grinbergalso tem uma grande leitura com resultados mais amplos neste artigo pedindo aos leitores que ignorem todos os benchmarks de desempenho da Web, incluindo este.
- p> Quando você estiver aprendendo como usar um ou mais frameworks web é útil ter uma idéia do que o código sob as capas está fazendo. Este post sobre a construção de um framework Python asimple do zero mostra como conexões HTTP, roteamento e requisições podem funcionar em apenas320 linhas de código. Este post é impressionante mesmo que o framework resultante seja uma simplificação do que frameworks como Django,Flask e Pyramid permitem aos desenvolvedores realizar.
-
Há também outro tutorial mais recente sobre como construir seu próprio framework web em Python. Esta série é baseada no projetoalcazar que o autor iscode para fins de aprendizado:
- Parte 1: Manuseio de pedidos
- Parte 2: Rotas, manipuladores baseados em classes e testes unitários
- Parte 3: Test Client and Templating Support
- Part 4: Exception Handling, Static Files and Middleware
-
Check out the answer to the”What is a web framework and how does it compare to LAMP?”question on Stack Overflow.
-
Another great series that digs behind the web framework magic is”Web Application from Scratch”. The four parts are:
- Part 1: handling HTTP requests and responses
- Part 2: abstracting Requests, Responses and Servers
- Part 3: request handlers and middleware
- Part 4: abstracting applications
-
Frameworks is a really well done short videothat explains how to choose between web frameworks. The author has someparticular opinions about what should be in a framework. For the most partI agree although I’ve found sessions and database ORMs to be a helpfulpart of a framework when done well.
-
Django vs Flask vs Pyramid: Escolher um Framework Web Python contém informações de fundo e comparações de código para aplicações web similares construídas nestes três grandes frameworks Python.
-
Este fascinante post de blog dá uma olhada na complexidade do código de vários frameworks web Python, fornecendo visualizações baseadas em suas bases de código.
- p> Os benchmarks de frameworks web Python é um teste de resposta de um framework com a codificação de um objeto para o JSON e seu retorno como resposta, assim como a recuperação de dados da base de dados e sua renderização em um template. Não houve resultados conclusivos – mas o resultado é divertido de ler sobre, no entanto.
- p>Que frameworks web você usa e porque eles são incríveis? é uma discussão agnóstica da linguagem Reddit sobre frameworks web. É interessante ver o que os programadores de outras linguagens gostam e não gostam em relação aos seus frameworks web comparados com os frameworks Python principais.
- p> Esta pergunta de usuário-votada & responde ao site “Quais são os melhores frameworks web Python de propósito geral utilizáveis em produção?” Os votos não são tão importantes quanto a lista de muitos frameworks que estão disponíveis para desenvolvedores Python.
-
Django vs. Flask em 2019: Que Framework escolher os melhores casos de uso para Django e Flask junto com o que os torna únicos, do ponto de vista educacional e de desenvolvimento.
- p>11 novos frameworks web Python tem uma rápida mudança em vários frameworks mais novos que ainda estão surgindo, como Sanic, Masonite e Molten.
Web frameworks learning checklist
-
Escolha um framework web Python importante (Django ou Flask são recomendados) e fique com ele. Quando você está apenas começando, é melhor aprender um framework primeiro em vez de saltar por aí para entender cada framework.
-
Work through a detailed tutorial found within the resources links on theframework’s page.
-
Study open source examples built with your framework of choice so you cantake parts of those projects and reuse the code in your application.
-
Build the first simple iteration of your web application then go tothe deployment section to make it accessible on theweb.