django vs flask vs node
Flask e Django são estruturas de desenvolvimento web baseadas em Python. Este tutorial compara Django e Flask em detalhes. Flask vs Node também é abordado brevemente:
Sempre foi um dilema penetrante quando se trata da questão de selecionar um Framework para seu próximo projeto. A cada poucos meses, você vê uma nova tecnologia e uma estrutura que supera a fraqueza da anterior que você usou.
Uma estrutura é mais como uma cultura silenciosa e um conjunto de convenções que você deve seguir para ser mais relevante e produtivo neste mundo de tecnologia em constante mudança. Comparativamente, o desenvolvimento da Web se move muito mais rápido do que o desenvolvimento de Desktop.
=> Leia a série de treinamento Flask
O que você aprenderá:
Django Vs Flask
Neste tutorial, traçamos uma comparação entre Django e Flask em detalhes. Flask e Django são estruturas de desenvolvimento web baseadas em Python. Muitos estão migrando para microframeworks leves. Essas estruturas são ágeis, flexíveis, pequenas e ajudam a desenvolver microsserviços e aplicativos sem servidor.
Considerando a popularidade do NodeJS, também fornecemos uma comparação prodigiosa entre Flask e Node na seção Flask vs. Node. Avaliar Django e Flask nos recursos a seguir o ajudará a selecionar um sobre o outro.
Admin padrão
Ambas as estruturas fornecem um aplicativo de administração bootstrapped. No Django, é integrado e vem com a instalação padrão. No entanto, no caso do Flask, você precisa instalar o Flask-Appbuilder para ter uma interface administrativa.
Enquanto isso, lembre-se de criar um superusuário no Django e admin no caso do Flask para que você possa entrar no backend do admin usando o navegador.
Bancos de dados e ORMS
O Django é fornecido com um ORM embutido padrão que suporta totalmente a interação com RDBMS como Oracle, MySQL, PostgreSQL, SQLite, etc. Este ORM também suporta a geração e gerenciamento de migrações. É relativamente mais confortável criar modelos de banco de dados com validações embutidas.
O Flask também não impõe nenhum método em particular e está disponível para ser usado com várias extensões que suportam recursos semelhantes, conforme descrito no caso do Django. Demos exemplos de Flask-SQLAlchemy, Flask-Migrate, Flask-MongoEngine, em um dos tutoriais da série.
Vistas e rotas
Ambos os frameworks têm mecanismos para declarar visualizações baseadas em métodos e classes. No caso do Django, as rotas e visualizações são mencionadas em arquivos separados. Além disso, sempre precisamos passar o objeto de solicitação explicitamente.
Por outro lado, no Flask, podemos usar um decorador para mencionar as rotas para os manipuladores correspondentes. O objeto de solicitação no Flask é global e está apenas disponível, sem qualquer passagem explícita. Detalhamos os conceitos de uso de visualizações e rotas em um de nossos tutoriais.
Formulários e modelos
Django Forms são embutidos na estrutura e não requerem instalação. Os formulários são essenciais para os aplicativos e, no Django, os formulários podem ser passados para tags de template e estão disponíveis para serem renderizados em templates. Porém, no caso do Flask, precisamos usar o Flask-WTF.
Também usamos o Flask-Appbuilder para criar formulários. Além disso, o WTF-Alembic pode ser usado para gerar formulários HTML com base em modelos de banco de dados.
Ambas as estruturas suportam modelos Jinja2 e ambos suportam o fornecimento de arquivos estáticos com funções embutidas para gerar as URLs dos recursos e é um padrão bastante comum em todas as estruturas atualmente.
Embora existam maneiras diferentes de passar as variáveis e de renderizar os modelos em seus métodos de visualização específicos, as duas estruturas têm a mesma sintaxe de acesso a variáveis em modelos.
Flexibilidade
Django, por causa de seu tamanho e complexidade, é menos flexível que o Flask. O frasco pode ser facilmente estendido com a ajuda de um grande número de extensões que ele suporta. Portanto, é necessário mais tempo e esforço para configurar o Flask porque precisamos avaliar mais extensões.
A liberdade dada aos desenvolvedores resulta em desenvolvimento e entrega mais lentos. Por outro lado, o Django segue um conjunto de convenções já estabelecidas e segue os arquétipos que exigem menos desvio das metas e objetivos do projeto.
Curva de aprendizado
Requer quase a mesma quantidade de tempo para aprender Django e Flask. O Flask tem uma API menor; portanto, as pessoas podem ser capazes de terminá-lo mais rápido no que diz respeito à estrutura principal. Torna-se igualmente desafiador quando se trata de usar suas extensões. Isso pode se tornar complicado em breve.
No entanto, só porque nem tudo está empacotado em um pacote, é mais fácil praticar a separação de interesses no caso do framework Flask.
Recomendamos que você aprenda os padrões e não a sintaxe que é seguida. Tanto o Django quanto o Flask possuem uma documentação excelente. Você pode acompanhá-lo facilmente ao desenvolver um recurso.
Tamanho e duração do projeto
Quando você trabalha em um projeto maior com equipes maiores, é melhor aproveitar o benefício da maturidade do Django e do amplo suporte de colaboradores que ele tem. Se o seu projeto é menor e requer um número menor de desenvolvedores, é melhor ir com o Flask.
Além disso, se o seu projeto vai durar muito, o Django é a escolha certa; caso contrário, você pode selecionar Flask.
tipo de aplicação
Anteriormente, o Django era considerado a escolha certa quando havia a necessidade de aplicativos da web completos em escala empresarial. Mas, hoje o Flask está igualmente maduro e pode servir bem para as mesmas condições.
No entanto, os desenvolvedores tendem a escolher o Flask mais para desenvolver sites pequenos ou estáticos, ou durante a implementação de serviços da Web RESTful API rápidos para entrega.
Recrutamento de desenvolvedores
Ter recursos qualificados na convenção da estrutura que você usa compensa. Você pode esperar um desenvolvimento mais rápido, testes mais rápidos, entrega mais rápida e soluções de problemas mais rápidas.
É muito fácil encontrar novos desenvolvedores no caso do Flask. No entanto, é desafiador encontrar recursos qualificados no Django. Não há muitos prontos para serem contratados por desenvolvedores Django. Além disso, o framework Django é bastante antigo e, portanto, a maioria das novas contratações é cara quando comparada com aqueles que são qualificados no framework Flask.
Novos técnicos graduados também estão pegando estruturas leves, como Flask, porque as tendências do setor são para a criação de aplicativos com microsserviços separados ou a tecnologia que suporta a criação da implementação sem servidor. Javascript é amplamente usado junto com as estruturas que são mais fáceis de usar e mais populares.
Código aberto
Ambos Flask e Django são projetos de código aberto. Você pode encontrar Django em https://github.com/django/django e Flask em https://github.com/pallets/flask. Olhando para esses projetos, o número de contribuidores para Django é bem maior do que aqueles que contribuem para Flask.
Portanto, podemos esperar mais suporte e mais rápido se tivermos alguns problemas e dúvidas que precisem de resolução. Ao contrário das suposições típicas, o número de usuários do projeto Flask é maior do que o do Django.
Um fato preocupante sobre o Flask é que pode não haver uma extensão estável para uma tarefa específica. Portanto, o trabalho de filtrar o melhor permanece com o usuário da extensão.
Por exemplo, usamos Flask-Twitter-oembedder para trabalhar com a API do Twitter no último tutorial, mas essa extensão teve alguns problemas por causa dos quais tivemos que mudar de Flask-Cache para Flask-Caching.
Tivemos até que incluir uma instrução de instalação personalizada para instalar o Flask-twitter-oembedder a partir de nosso repositório Github atualizado em vez de mencioná-lo em nosso arquivo requrements.txt do projeto.
A manutenção frequente é um desafio típico que você enfrentará em um projeto de código aberto. O suporte e o gerenciamento do projeto de código aberto geralmente estão vinculados a serviços pagos. Você pode ter que esperar muito tempo para que alguns problemas sejam corrigidos dos contribuidores do projeto.
atuação
O framework Flask é mais leve que o Django e tem um desempenho melhor com diferenças insignificantes, especialmente ao considerar as operações de E / S.
Dê uma olhada nas comparações fornecidas abaixo. Com o aumento das solicitações, o desempenho do Flask permanece quase o mesmo. No entanto, o Django leva mais tempo para renderizar os modelos após buscar os dados usando o ORM.
Python Flask Vs Django: uma comparação tabular
# | Características | Django | Frasco |
---|---|---|---|
7 | Interpolação de variáveis em modelos | Em templates / demo.html {{tempvar}} | Em templates / demo.html {{tempvar}} |
1 | Admin padrão | Backend Admin integrado | Instale o Flask-Appbuilder |
dois | Habilitar Admin padrão | Em settings.py, certifique-se de remover o comentário do aplicativo instalado pelo administrador. ... # Definição de aplicativo INSTALLED_APPS = ( 'local na rede Internet', 'django.contrib.admin', # outro código ) ... | Importe o AppBuilder e o SQLA do flask_appbuilder, inicialize o banco de dados primeiro e depois o Appbuilder from flask importar Flask de flask_appbuilder import AppBuilder, SQLA app = Flask (__ name__) db = SQLA (app) appbuilder = AppBuilder (app, db.session) |
3 | Criar usuário administrador | python manage.py comesuperuser | frasco fab criar admin |
4 | Bancos de dados e ORMS | ORM embutido para RDBMS Use Django-nonrel para back-ends NoSQL | Instale Flask-SQLAlchemy Uma extensão Flask específica de NoSQL, como Flask-MongoEngine |
5 | Vistas e rotas | URLConf em urls.py do caminho de importação django.urls de .import views urlpatterns = ( caminho ('/ caminho', views.handler_method), # outros urls e manipuladores ) | Use o decorador @ app.route (“/ path”) no Views para mapear uma rota com uma função. @ app.route (“/ caminho”) def handler_method (): # outro código com lógica adicional |
6 | Render Templates | Em visualizações de django.shortcuts import render def example_view (solicitação): tempvar = ”value_for_template” return render ( solicitação, ‘Demo.html’, {'Tempvar': tempvar} ) | Em visualizações a partir de . importar aplicativo do pedido de importação do frasco from flask import render_template @ app.route (“/ caminho”) def demo (): tempvar = ”value_for_template” return render_template ( “Demo.html”, temp_var = temp_var ) |
8 | Flexibilidade | Menos flexível | Mais flexível |
9 | Decisões de Design | Menos decisões de design com desenvolvedores. | Mais liberdade para os desenvolvedores. |
10 | Desvio de Projeto | Menos desvio dos objetivos do projeto. | Mais desvio devido à liberdade dada aos desenvolvedores. |
onze | Tamanho da base de código | Base de código maior | Base de código menor |
12 | Nº de APIs | Mais APIs | Menos APIs |
13 | tipo de aplicação | Aplicativos da Web completos | Aplicativos / microsserviços menores |
14 | Aplicativos RESTful | Framework Django REST para aplicativos RESTful. | Use as seguintes extensões para aplicativos RESTful. Flask-RESTful Flask-RESTX Conecte-se |
quinze | atuação | Desempenho lento quando o número de solicitações é grande. | Desempenho consistente em todo o processo. |
16 | Contribuições de código aberto | Mais número de garfos, relógios e compromissos. | Menor número de garfos, relógios e compromissos. |
17 | Desenvolvedores | Requer desenvolvedores experientes e não estão facilmente disponíveis para recrutamento. | A maioria dos desenvolvedores é menos experiente e é encontrada em números adequados. |
Flask Vs Node
Com respeito à pilha de desenvolvimento da web, verifica-se que o desenvolvimento para a web requer um amálgama de várias tecnologias. Precisamos dividir um aplicativo da web em front-end e back-end. A parte front-end do aplicativo é melhor desenvolvida nas tecnologias executadas no navegador, como JavaScript, HTML e CSS.
Geralmente, o back-end é desenvolvido em linguagens que são adequadas para o lado do servidor e podem interagir com o sistema operacional subjacente, bancos de dados conectados ou a rede quando necessário.
No entanto, uma estrutura baseada em JavaScript chamada NodeJS mudou a visão fornecida acima e permitiu que os desenvolvedores tivessem consistência e uniformidade no desenvolvimento de front-end e back-end para aplicativos da web. Os desenvolvedores podem desenvolver para o back-end usando JavaScript.
Nesta seção Flask vs Node, comparamos o Flask, que é uma estrutura baseada na linguagem de programação Python, com o Node, que é baseado no tempo de execução do JavaScript do Chrome em vários critérios, como arquitetura, velocidade, suporte da comunidade, etc.
# | Critério | Frasco | Nó |
---|---|---|---|
7 | Depurando | Mais fácil de depurar com o depurador Python sem dependências. | Requer mais esforço. Mais fácil com um IDE de desenvolvimento com Biblioteca Bluebird / Promise. |
1 | Tempo de execução da linguagem | Pitão | Motor V8 JavaScript do Chrome |
dois | Arquitetura | E / S sem bloqueio requer o uso de servidores da web sem bloqueio, como o gunicorn. Categoria de microframework (back end). | Fornece inerentemente E / S sem bloqueio. Categoria Fullstack |
3 | Gerenciador de pacotes | pip | acima do nível do mar |
4 | Velocidade | Mais lento por causa de um interpretador Python separado. | Mais rápido por causa do compilador Just-In-Time. |
5 | Código aberto | sim | sim |
6 | Suporte da comunidade | No Github 2.3 K Relógios 51,4 K estrelas 13,7 K Forks | No Github 2,9 K Relógios 71,9 K estrelas 17,6 K Forks |
8 | Manutenção | Baixa manutenção | Maior manutenção |
9 | Aplicativos em tempo real | Inerentemente não adequado. No entanto, ele pode funcionar junto com o socket.io para casos de uso em tempo real. Use a extensão Flask-socketio. | Adequado devido à arquitetura orientada a eventos e módulos de streaming. Inerentemente assíncrono. |
10 | Bibliotecas | Mais maduro e estável. | Menos maduro e estável, mas com desenvolvimento ativo e lançamentos de correção. |
onze | Qualidade do Código | Ele é criado exclusivamente para o back-end. | Às vezes, ele fica comprometido porque novos desenvolvedores de front end estão mudando para o backend. |
12 | Composição da equipe de desenvolvedores | As equipes geralmente são compostas por desenvolvedores de back end e desenvolvedores de front end. As preocupações são separadas. | Os desenvolvedores podem trocar funções e trabalhar para front-end e back-end. |
13 | Integração com sistema e aplicativos existentes | Mais fácil de integrar com outros aplicativos de back-end legados existentes usando o ecossistema Python para aplicativos de aprendizado de máquina e Big Data. | Bastante novo e requer a criação de bibliotecas personalizadas ou novas para integração com outros aplicativos existentes. |
perguntas frequentes
P # 1) O que devo aprender primeiro, Django ou Flask?
Responda: É melhor ir com o Flask primeiro. Depois de ganhar um pouco de experiência em desenvolvimento web, você pode começar o Django. O Django assume que você já sabe como funcionam os aplicativos da web e cuida da maioria das funcionalidades por si só.
P # 2) O Flask ou o Django são melhores?
Responda: Tanto o Flask quanto o Django são excelentes e adequados para sua finalidade. Django é usado para criar aplicativos de escala corporativa mais proeminentes. O Flask é usado para criar aplicativos estáticos e menores. O frasco também é adequado para prototipagem. No entanto, com o uso de extensões Flask, podemos criar aplicativos grandes também.
P # 3) Quais empresas usam o Flask?
como você abre arquivos jar
Responda: Algumas das empresas que usam o Flask são Reddit, Mailgun, Netflix, Airbnb, etc.
P # 4) Quais sites usam Django?
Responda: Alguns dos sites que usam Django são Instagram, Spotify, YouTube, Dropbox, Bitbucket, Eventbrite, etc.
Conclusão
Não devemos realmente nos fixar em uma estrutura por muito tempo. Devemos estar prontos para aprender novos conjuntos de tecnologia e adotar as pilhas de tendências que existem. Alguns de nós querem abordagens comparativamente fora da caixa, com bateria incluída e ciclos de liberação rígidos, mantendo compatibilidade com versões anteriores mais rígidas, etc.
Se você acha que pertence mais a este grupo, você deve escolher Django. No entanto, é incrível andar junto com os novos recursos e flexibilidade do framework Flask também. Quando você deseja manter a consistência entre o front-end e o back-end, pode escolher uma estrutura de pilha completa, como NodeJS.
Escolher uma estrutura é mais uma escolha que depende do contexto e dos problemas que tentamos resolver. Selecionar uma estrutura é sempre difícil. Esperamos ter apresentado os pontos de revisão essenciais neste tutorial e ele irá ajudá-lo a finalizar um framework. No entanto, recomendamos aprender as duas estruturas.
É mais fácil começar com o Flask e então passar para o Django depois de ganhar alguma experiência em desenvolvimento web. Se, por algum motivo, seus esforços de desenvolvimento exigirem o uso de JavaScript, você pode prosseguir com o NodeJS.
=> Verifique TODOS os tutoriais do frasco aqui
Leitura recomendada
- Python Django Tutorial - Primeiros passos com Django
- Padrões de design e práticas recomendadas para aplicativos da Web
- Modelo, formulário, visualização e redirecionamento de frasco com exemplos
- As 31 principais perguntas populares da entrevista em Python Flask com respostas
- Como configurar a estrutura de teste do Node.js: tutorial do Node.js.
- Tutorial TestNG: Introdução ao Framework TestNG
- Estrutura baseada em palavras-chave no selênio com exemplos
- Tutorial do Robot Framework - Recursos e instalação de software