Python pode ser dividido em algumas áreas como o Python é muito diversificada língua e pode ser usado em vários campos. Cada um destes campos tem os seus próprios quadros, alguns dos quais são mais populares do que outros. Um dos campos mais populares em Python é o desenvolvimento da web,que vamos focar hoje.
O apresentados os quadros podem ser divididos em três categorias: pilha completa de quadros, que oferecem um monte de fora da caixa funcionalidades para o servidor e do lado do cliente; microframeworks, que oferecem suporte do lado do servidor (às vezes, que pode ser estendido para o lado do cliente) e permitir a criação de um aplicativo web usando apenas uma única Python arquivo; e, finalmente, assíncrona quadros, que tratam de pedidos de forma assíncrona.
frameworks web Full-stack
Django
Django é um dos frameworks Python mais populares. Ele oferece um monte de funcionalidades fora da caixa, como Painel de Administração ou vistas genéricas e formulários. As principais características de Django são:
-
um script de gestão (“manage.py” ) que pode ser usado para realizar a maioria das ações específicas do framework (como iniciar o servidor de desenvolvimento, criar um usuário de administração, coletar arquivos estáticos etc.),
-
síncrona pedido de processamento,
-
a MTV (model-modelo-vista) padrão de arquitetura (que é uma variação do modelo-vista-controlador de padrão),
-
personalizado de mapeamento objeto-relacional (ORM) para comunicação com o banco de dados,
-
o uso de funções e classes para visualizar o contexto de criação e de ação de manuseio,
-
Django é restrita e forças de seu próprio estilo de codificação do desenvolvedor – um monte de meta programação,
-
muito bom, extensa documentação com exemplos,
-
custom HTML modelos de renderização motor,
-
URL personalizado sistema de roteamento
-
de conformidade com o WSGI padrão,
-
suporte para arquivos estáticos – roteamento de URL, bem como a detecção e recolha,
-
um grande número de módulos externos, por exemplo, o Django RESTO Framework Django CMS, Django Canais (websockets).
Django é um bom ajuste para projetos maiores, onde apoio extensivo de infra-estruturas e frontend é necessário ou nos casos em que o tempo desempenha um papel crucial, como Django oferece um grande número de componentes prontos. A codificação em Django baseia-se principalmente na personalização de partes genéricas do Código. O desenvolvedor deve seguir um conjunto de regras que vêm com um dado elemento. Para projetos onde se deseja muita flexibilidade de código, Django pode não ser a melhor escolha.
37,514 Github estrelas / 183,588 StackOverflow perguntas
Web2py
Web2py se concentra em segurança, a velocidade de desenvolvimento e facilidade de uso. Ele oferece um monte de recursos fora da caixa: um servidor web, banco de dados, Painel de administração, wiki ou widgets grid. As principais características do enquadramento são::
-
síncrona pedido de processamento,
-
personalizado Camada de Abstração de Dados (DAL), que funciona como ORM,
-
força uma estrutura MVC,
-
funções e classes podem ser usadas para a criação de Controladores,
-
estrito “Não deve ser apenas uma forma de fazer as coisas” filosofia,
-
rica documentação com um monte de exemplos,
-
custom HTML mecanismo que permite que o código Python para ser usado nos modelos,
-
personalizado de roteamento de URL função que gera interno caminhos para as acções estáticas e arquivos,
-
suporte para o padrão WSGI, mas é possível usar CGI( Interface Comum de Gateway), FastCGI, GAE (Google App Engine) ou outro,
-
oferece roteamento de arquivos estáticos e streaming durante o desenvolvimento,
-
tem Serviços de repouso incorporados, mas requer o framework Tornado para o uso de ‘Socket’ Web.
Web2py foi altamente inspirado em Ruby on Rails e Django frameworks e leva o que é o melhor de ambos. pode ser uma boa escolha para programadores que querem migrar de Ruby ou para aqueles que estão entediados com Django, mas estão à procura de outro grande e rico em recursos. ele oferece um aplicativo “admin”, que atua como um IDE baseado na web para o desenvolvimento e gestão de aplicações (por exemplo, criações de aplicativos, editor de código). Ele também é apoiado por PyCharm. em geral, Web2Py não carece de quaisquer funcionalidades que Django tenha. Estes dois quadros podem ser utilizados para desempenhar as mesmas tarefas. Web2Py é mais jovem, e tem uma comunidade menor do que Django, então pode ser um pouco mais difícil de encontrar ajuda em caso de problemas.
1,665 GitHub estrelas / 2,004 StackOverflow perguntas
TurboGears
TurboGears conecta uma série de serviços externos para criar uma estrutura funcional:
-
síncrona pedido de processamento,
-
model-view-controller (MVC) padrão,
-
usa o SQLAlchemy ORM,
-
permite o uso de funções e classe de contexto da visualização de geração,
-
ele oferece algumas pronto-para-uso genérico classes (muito interessante APIController para o RESTO da API de criação),
-
documentação é um pouco caótico, mas ele pode ser uma questão de habituar-se a ela,
-
utiliza o Kajiki modelo de linguagem,
-
personalizado de roteamento de URL/métodos de despacho,
-
em conformidade com o WSGI standard,
-
suporta configurações de localização de ficheiros estáticos
-
pode ser estendida com módulos adicionais, por exemplo, Circus e Chaussette para suporte de tomadas Web.
o framework não é tão popular quanto os dois antecessores, mas vale a pena verificar.
259 GitHub stars / 107 stackoverflow questions
Microframeworks
Flask
é uma das micro-ramificações de Python mais populares, é confiável e rápido. Diz-se que foi criado como uma piada. As principais características do enquadramento são::
-
síncrona pedido de suporte,
-
não forçar qualquer projeto de arquitetura, mas tem algumas recomendações (pacote, módulo, plantas),
-
não ofereça ORM, mas o SQLAlchemy ou outro pode ser usado,
-
suporta funções, bem como alguns Django-como classe genérica pontos de vista (a partir de Balão 0.7),
-
solta estilo de codificação, não forçar soluções, a maioria das decisões são deixadas para o desenvolvedor, a seu critério,
-
boa documentação com exemplos,
-
é possível usar Jinja2 HTML Template engine,
-
Werkzeug sistema de roteamento,
-
em conformidade com o WSGI padrão,
-
suporte básico de arquivo estático roteamento,
-
pode ser estendido com algum adicional de módulos de terceiros, e.g. Frasco-RESTful para o RESTO da API de criação ou frasco-socketio para Web Sockets de Suporte.
Este quadro fará o truque em projetos pequenos e médios. Ele tem alguns módulos de terceiros que estão prontos para ser usados, bem como boas soluções nativas.
Flask deve provar – se em trabalhos onde complicadas características personalizadas são necessárias, mas Django parece muito grande para a tarefa. Por outro lado, colocar Flask para um projeto maior desde o início pode ser complicado, pois não há nenhuma maneira “oficial” de fazê-lo.
39,946 Github stars / 24,512 stackoverflow questions
Pyramid
Pyramid starts with a minimal installation that can be extended when neededed. Vale a pena notar que faz parte do projeto Pylons, que integra tecnologias relacionadas à web. estas são algumas das características mais importantes da pirâmide:
-
oferece síncrona pedido de processamento,
-
contextos de vistas pode ser definido com funções bem como classes,
-
não existe um ORM, mas o SQLAlchemy é recomendado,
-
não forçar qualquer estilo de codificação ou de projeto de arquitetura – TIMTOWTDI,
-
oferece uma boa documentação com tutoriais e exemplos,
-
não específico de modelo HTML do motor é entregue, mas Camaleão é recomendado,
-
um costume interessante sistema de roteamento permite que vários pontos de vista para corresponder a uma URL,
-
é compatível com WSGI,
-
pode ser estendido com módulos externos, por exemplo, Cornice for REST APIs, ayopyramid with async support.
suporte de arquivos estáticos extensivos-arquivos servindo, encaminhamento de URL para arquivos estáticos,
Esta estrutura pode ser uma boa escolha nos casos em que você não quer gastar tempo aprendendo soluções de frameworks personalizadas (como o ORM), mas ainda precisa de uma ferramenta extensa para construir software, como o Pyramid suporta o uso de muitas soluções autônomas bem conhecidas.
ele tem boas capacidades de escala-anuncia – se como um framework que pode “começar pequeno e terminar grande”.
2,974 GitHub questions / 2,060 stackoverflow questions
CherryPy
permite a criação de aplicações web da mesma forma que o object-oriented Python project. Ele não tem funcionalidades completas e não força nenhuma solução específica-o desenvolvedor pode decidir como resolver problemas que ocorrem durante o desenvolvimento. As características do CherryPy são::
-
oferece síncrona pedido de suporte,
-
não força nenhuma estrutura de projecto de arquitectura,
-
não entregar qualquer ORM, mas o SQLAlchemy ou SQLObject pode ser usado,
-
não entregar qualquer modelo HTML do motor,
-
tem uma solto estilo de codificação,
-
oferece decente documentação,
-
o sistema de roteamento de rotas (Python versão do Rails, o sistema de roteamento) pode ser utilizado,
-
é compatível com WSGI,
-
tem um bom suporte para arquivos estáticos – permite a veiculação de arquivos ou de todo o arquivo directórios,
-
permite a criação de APIs de descanso apenas com ferramentas incorporadas,
-
facilita o uso de bases Web através do módulo ws4py.
a principal vantagem do CherryPy é que ele vem com um servidor WSGI pronto para produção, o que remove a necessidade de configurar um servidor externo durante a implantação. a principal desvantagem deste framework é que ele não é muito popular, por isso tem um menor número de módulos externos e uma comunidade menos vibrante.
829 GitHub estrelas/ 1,244 StackOverflow perguntas
BottlePy
isso É mais um microframework que anuncia a si mesmo como simples e rápida. Vale a pena notar que o BottlePy é entregue como um único módulo sem dependências adicionais. Recurso:
-
implementa síncrona processamento de pedidos
-
oferece HTML personalizado motor, mas outros motores como o Mako, Jinja2 ou Cheetah pode ser usado,
-
não entregar ORM, mas é possível utilizar soluções externas, por exemplo, O SQLAlchemy ou de Macaron,
-
não forçar qualquer projeto de arquitetura,
-
oferece documentação suficiente,
-
tem um costume de sistema de roteamento, mas Werkzeug sistema de roteamento pode ser usado (através de garrafa de água, werkzeug),
-
implementa WSGI padrão,
-
oferece ficheiro estático roteamento,
-
oferece greenlets (com gevent) como tratamento de solicitação assíncrona de solução,
-
é possível criar API REST sem módulos externos – suporte a JSON dados do cliente.
Devido ao seu pequeno tamanho (apenas um arquivo) e sem dependências externas (biblioteca Python padrão apenas) necessário, pode ser uma boa escolha para iniciantes que querem começar a aprender desenvolvimento web. ele também pode fazer um bom trabalho com sites muito pequenos ou testes descartáveis. BottlePy não será a melhor escolha para projetos de tamanho médio ou maior, como seria necessário algum trabalho para chegar ao ponto onde os frameworks mais pesados começam.
5.795 Estrelas de GitHub/1.288 questões de StackOverflow
frameworks assíncronos
Aiohttp
é uma extensa plataforma em Python async. Ele oferece um servidor com middleware, sinais, paradas graciosas e muito mais:
-
tratamento de solicitação assíncrona, cliente e servidor de websockets,
-
é possível usar GINO assíncrono ORM,
-
suporta a função e classe baseada em pontos de vista,
-
documentação suficiente, mas um pouco difícil de navegar,
-
é possível usar puro SQLAlchemy, mas GINO como um assíncrono wrapper é recomendado,
-
suporta o Postgres, MySQL, Redis assíncrono drivers
-
nenhum fora-de-o-modelo de caixa de motor, mas Jinja2 ou Mako poderia ser aplicado,
-
personalizado sistema de roteamento
-
não WSGI apoio,
-
suporta o encaminhamento para ficheiros estáticos,
-
muitos módulos de terceiros que podem alargar ainda mais a estrutura, por exemplo, aiohhttp-apispec para a criação da API REST, aiohhttp-segurança para as autenticações e permissões dos utilizadores.
uma vez que oferece um monte de recursos fora da caixa (por exemplo, suporte para os lados do cliente e servidor, WebSocket, middleware, sinais), Aiohhttp pode ser usado com projetos de médio porte (ou mesmo com os maiores).
6,378 Github stars / 503 stackoverflow questions
Sanic
Sanic é uma estrutura muito semelhante a um frasco: é pequeno, liberal, e deixa um monte de espaço para o desenvolvedor. A sua principal característica definidora é a sua velocidade. Aqui estão algumas outras características:
-
suporte para solicitação assíncrona manipulador,
-
não oferece qualquer banco de dados, interfaces, mas GINO assíncrono ORM pode ser instalado,
-
oferece função e de classe como a fonte de vista contexto,
-
estilo de codificação é um pouco solto, muito semelhante ao Balão,
-
documentação entregue com “readthedocs”,
-
Jinja2 HTML template engine pode ser usado,
-
feito-sistema de roteamento
-
não é compatível com WSGI por padrão, mas um terceiro módulo (sanic-dispatcher) pode ser instalado para apoiá-lo,
-
tem básica o encaminhamento de arquivos estáticos,
-
pode ser estendido com módulos adicionais, por exemplo, Sanic CRUD para criação da API REST.
deve ser uma boa decisão escolher Sanic quando você já teve alguma experiência com Flask, uma vez que estes dois frameworks têm muito em comum. a Sanic oferece o tratamento de configuração padrão, enquanto no aiohhttp mencionado anteriormente, o usuário precisa fazê-lo por conta própria. Ele tem alguns módulos de terceiros interessantes, como um limitador de taxa de solicitação ou uma integração GraphQL.
10.625 Github stars/58 StackOverflow questions
Tornado
Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed (a social aggregation site). Graças a isso, oferece uma integração integrada com serviços sociais como Google, Facebook e Twitter. a integração com outros frameworks e bibliotecas também é possível: aplicações Twisted, asyncio ou mesmo WSGI. Características do Tornado:
-
oferece um monte de classes genéricas que podem ser usadas para criar a aplicação, e.g. Router, ou SocketHandler para websockets,
-
modelo HTML personalizado motor,
-
clara e fácil de ler a documentação,
-
funções e classes, pode ser usado para definir ações e processamento de pedidos,
-
roteamento personalizado manuseio, oferece classes genéricas que podem ser usados para a criação da rota,
-
ele suporta WSGI, mas não é recomendado – o usuário deve usar o Tornado próprias interfaces em vez disso,
-
fora-da-caixa-suporte de websockets, autenticação (e.g. através do Google), e recursos de segurança (como assinatura de cookies ou proteção XSRF),
-
não são necessárias ferramentas adicionais para a criação da API de descanso.
a estrutura deve funcionar bem nos casos em que existem muitas ligações recebidas que podem ser tratadas rapidamente ou em soluções em tempo real, por exemplo, conversas. Tornado tenta resolver o problema de c10k então alta velocidade de processamento é uma prioridade.
outra vantagem do Tornado é o seu apoio nativo para os Serviços Sociais. Este framework não será uma boa escolha para criar sites padrão CRUD ou aplicações de grandes negócios, uma vez que não foi projetado para ser usado dessa forma. Para projetos maiores, ele pode ser integrado com aplicações WSGI como parte de sua estrutura maior e cuidar de tarefas que requerem altas velocidades de manuseio.
16,768 Github estrelas / 3,263 StackOverflow perguntas
Resumo
web quadros apresentados acima são apenas uma pequena parte de uma maior e mais ampla família de Python quadros. cada solução tem seus pontos fortes e fracos e, como com tudo o resto, não há uma combinação perfeita que resolva cada tarefa dada. as questões mais importantes a serem respondidas quando se escolhe o quadro são ditadas por problemas que precisam ser resolvidos.
- Se for necessário suporte extensivo no lado do servidor e do navegador, então um framework full-stack pode ser uma boa escolha.
- para projetos menores ou onde a flexibilidade na escrita código é uma prioridade, um micro-framework pode ser o caminho a seguir.
- Nos casos em que a velocidade de processamento de Pedidos desempenha um papel importante ou um projeto terá de lidar com longos tempos de resposta, framework assíncrono deve fazer o truque.