O que é o Django?
O Django é um software que você pode usar para desenvolver aplicações Web de forma rápida e eficiente. A maioria das aplicações Web tem várias funções comuns, como autenticação, recuperação de informações de um banco de dados e gerenciamento de cookies. Os desenvolvedores precisam codificar funcionalidades semelhantes em cada aplicação Web que eles escrevem. O Django torna esse trabalho mais fácil, agrupando as diferentes funções em uma grande coleção de módulos reutilizáveis, chamados de framework de aplicações Web. Os desenvolvedores usam a framework Web do Django para organizar e escrever seu código de maneira mais eficiente e para reduzir significativamente o tempo de desenvolvimento na Web.
Por que os desenvolvedores Web escolhem o Django?
Há vários frameworks da Web no mercado. O Django foi escrito na linguagem Python, e é um entre muitos frameworks Web em Python. No entanto, os desenvolvedores geralmente preferem o framework Web do Django a outros pelos motivos a seguir.
Velocidade de desenvolvimento
O framework do Django é bem organizado e simples de instalar e aprender, para que você possa começar em poucas horas. Os designers do Django criaram o framework para implementar rapidamente qualquer arquitetura Web no código. Ele oferece suporte ao desenvolvimento rápido e ao design limpo e pragmático. Você pode escrever código em apenas algumas linhas porque o Django fornece uma estrutura pronta para uso para várias tarefas comuns de desenvolvimento Web, como:
- Autenticação de usuários
- Administração de conteúdo
- Mapas de sites
- Feeds RSS
Econômico
O Django é um projeto Python gratuito e de código aberto com uma comunidade ativa que analisa e mantém o software. Uma organização sem fins lucrativos chamada Django Software Foundation promove e apoia o uso e a manutenção do Django. Ela realiza encontros, reuniões e eventos comunitários regulares que incentivam outros desenvolvedores a revisar e a contribuir com o projeto Django. O resultado é um framework Web de alta qualidade e rico em recursos, de uso gratuito.
Popular
Milhares de projetos de código aberto e sites de grande visibilidade usam o Django, como:
- Mozilla Firefox
- National Geographic
Devido à sua popularidade, o framework continua a evoluir e tem uma forte infraestrutura de suporte. Um grande número de indivíduos e empresas fornece suporte gratuito e pago para quaisquer desafios de desenvolvimento que você possa enfrentar ao usar o Django.
Como o Django funciona?
Qualquer aplicação Web é composta por duas partes: código do servidor e código do cliente. O cliente ou visitante do site tem um navegador. Quando eles digitam um URL no navegador, eles enviam uma solicitação para a máquina do servidor Web na qual a aplicação Web está sendo executada. O servidor processa a solicitação usando um banco de dados e envia as informações de volta ao cliente como resposta. O código do cliente exibe as informações para o visitante como uma página Web.
O Django gerencia o código para esse sistema de solicitação e resposta usando uma arquitetura Model-View-Template (MVT).
Modelo
Os modelos do Django atuam como a interface entre o banco de dados e o código do servidor. Eles são a única fonte definitiva de informações sobre seus dados. Esses modelos de dados contêm os campos e as operações essenciais necessários para interagir com seu banco de dados. Os modelos do Django convertem suas tabelas de banco de dados em classes ou objetos no código Python. Isso é chamado de mapeamento relacional de objetos.
Geralmente, cada modelo é mapeado para uma única tabela de banco de dados e tem atributos que representam os campos do banco de dados. Se, por exemplo, seu site incluir detalhes de funcionários, ele poderá ser representado como:
- Uma tabela de funcionários com nomes de funcionários e campos de endereço.
- Um modelo de funcionário chamado Funcionário da Classe com dois atributos, ou campos de modelo, chamados Nome e Endereço.
Visualização
As visualizações do Django processam a solicitação usando os modelos. Você pode escrever uma função de visualização para cada tipo de solicitação que os visitantes podem fazer ao visitar seu site. Uma função de visualização pode receber a solicitação como entrada e retornar uma resposta, que pode ser um código de erro, uma imagem, um arquivo ou qualquer tipo de dado.
O Django tem um mapeador de URLs, ou despachante de URLs, recurso que correlaciona suas funções de visualização com seus URLs. Você precisa criar um arquivo mapeador de URLs em que você escreve padrões de URL, conforme mostrado abaixo.
urlpatterns = [
path('employee/name', views.employee_name),
path('employee/<int:year>/', views.year_archive),
]
Por exemplo, se você quiser que os visitantes do seu site vejam uma lista de todos os seus funcionários em um ano específico, então você configura o caminho do URL employee/year number e escreve uma função de visualização do Django year_archive correspondente. Quando o visitante do seu site digita "yourwebsitename.com/employee/2020" no navegador, as seguintes etapas ocorrem:
- A solicitação chega à sua aplicação Web.
- O framework Web do Django obtém o número do ano e o nome da função de visualização do mapeador de URLs.
- Ela executa a função de visualização year_archive para o ano de 2020.
- A função year_archive usa o modelo de funcionário para obter todos os dados de funcionários do banco de dados para 2020.
- O framework Web do Django envia os dados de volta como uma resposta.
Modelo
Os modelos do Django gerenciam a apresentação da página Web no navegador. Como a maioria das páginas Web está em Hypertext Markup Language (HTML), você pode escrever o código de modelo do Django em um estilo semelhante ao HTML. Um arquivo de modelo contém determinados componentes:
- As partes estáticas da saída HTML final, como imagens, botões e cabeçalhos.
- Sintaxe especial que descreve como inserir conteúdo ou dados dinâmicos, que muda a cada solicitação.
Os componentes a seguir compõem o sistema de modelos do Django.
A linguagem do modelo
A linguagem do modelo é a linguagem de programação que você usa para escrever o código do modelo HTML. O Django oferece suporte à sua própria linguagem de modelo Django e uma alternativa popular chamada Jinja2.
O mecanismo de modelos
O mecanismo de modelos processa o arquivo de modelo e cria a saída HTML final. Ele inclui os dados da resposta nessa saída.
Por exemplo, quando o visitante do seu site solicita informações de funcionários, seu modelo do Django preenche a página Web que eles veem com o cabeçalho do seu site, uma tabela que contém os nomes e endereços de todos os funcionários e um botão chamado “Next” (Próximo).
Quais outros módulos você pode usar no Django?
Embora a arquitetura Model-View-Template (MVT) defina a estrutura básica de qualquer aplicação, o Django tem vários outros módulos para aprimorar seu site. Veja alguns exemplos a seguir.
Formulários
A maioria dos sites exige formulários, para tarefas como registro e pagamento ou para coletar informações do visitante do site. O Django fornece muitas ferramentas e bibliotecas que você pode usar para gerenciar os formulários do seu site. Ele pode simplificar e automatizar o processamento de formulários e pode fazer isso com mais segurança do que se você mesmo escrevesse o código.
O Django lida com o processamento de formulários de três maneiras:
- Criação de formulários preparando e reestruturando dados para exibição
- Validação de formulário verificando formulários HTML no lado do cliente
- Processamento de formulários ao receber os dados enviados
Autenticação de usuários
Os sites contemporâneos precisam autenticar e autorizar os usuários. A autenticação verifica a identidade de um usuário e a autorização decide o que um usuário autenticado pode fazer no site. O Django pode gerenciar a autenticação para vários usos.
- Contas de usuários
- Permissões e sinalizadores de sim ou não que permitem que os usuários executem determinadas tarefas do site
- Grupos de várias contas de usuário com permissões semelhantes
- Sessões de usuário baseadas em cookies
Ele também fornece um sistema de hash de senha configurável e ferramentas para restringir o conteúdo em formulários e exibições.
Administração do site
O site de administração do Django facilita o fornecimento de uma página de administração para o seu site. Os administradores do site podem usar a página para criar, editar ou exibir os modelos de dados em seu site.
O Django é opinativo?
Chamamos informalmente os frameworks da Web de “opinativos” quando elas impõem um processo aos desenvolvedores Web. Eles têm uma opinião ou uma maneira correta para os desenvolvedores realizarem determinadas tarefas. Por exemplo, os frameworks opinativos normalmente oferecem suporte ao desenvolvimento eficiente em setores específicos, mantendo a documentação detalhada para tarefas de aplicações relacionadas a esse setor.
Por outro lado, frameworks não opinativos têm menos restrições sobre como você pode integrar os diferentes componentes Model-View-Template (MVT). Embora sejam mais flexíveis, causam complicações na organização do código porque desenvolvedores diferentes podem usar abordagens variadas para a mesma tarefa.
O Django é um pouco opinativo. Ele fornece uma ampla variedade de componentes e inclui documentação sobre como lidar com muitos tipos diferentes de tarefas de desenvolvimento Web. Os desenvolvedores podem usar a arquitetura desacoplada do Django para escolher entre uma variedade de opções, e ela até adiciona suporte para novas opções que eles precisam.
O que é segurança do Django?
Os cibercriminosos geralmente visam aplicações Web para acessar o login do usuário, dados financeiros e outras informações confidenciais. O framework Web do Django oferece vários recursos para proteger suas aplicações Web e seus usuários. Você evita muitos erros comuns de segurança seguindo as práticas recomendadas do Django. Veja alguns exemplos a seguir.
Proteção contra cross-site scripting
Ataques de cross-site scripting (XSS) ocorrem quando cibercriminosos inserem código malicioso nos navegadores dos usuários do seu site. Eles podem atacar seus usuários enganando sua aplicação Web de várias maneiras, como:
- Armazenar scripts maliciosos em seu banco de dados para que o servidor envie inadvertidamente código malicioso em sua próxima resposta.
- Enganar seus usuários para que cliquem em um link que faz com que o código malicioso do cliente, em vez do seu código, seja executado no navegador do usuário.
Por exemplo, o modelo do Django pode ter {{name}}, que mostra o texto que um usuário insere no campo de nome de seu perfil. O cibercriminoso sequestra a sessão e muda o nome para um código como <script>alert('hello')</script>. O modelo muda para {{<script>alert('hello')</script>}}.
Esse código agora é executado no navegador do usuário para que a mensagem de texto “Olá” apareça na tela dele. Embora esse exemplo seja simplista, você pode ver como um cibercriminoso pode inserir scripts complexos para controlar o computador do usuário.
O Django protege você de tais ataques fazendo o escape ou ignorando automaticamente caracteres específicos, como < e > que indicam um código malicioso, da entrada do usuário.
Proteção contra acesso não autorizado
Ataques de Cross-site Request Forgery (CSRF – Falsificação de solicitação entre sites) ocorrem quando hackers roubam as credenciais de seus usuários e enviam solicitações não autorizadas à sua aplicação Web. O Django tem proteção integrada contra a maioria dos tipos de ataques CSRF no módulo CSRF do Django. Ele funciona enviando um valor secreto para cada usuário no primeiro login.
As solicitações de novos clientes incluem o valor secreto como prova de que o cliente é quem afirma ser. Como apenas o navegador do usuário autorizado sabe o valor secreto, o Django pode rejeitar automaticamente solicitações se elas vierem de alguma outra máquina que esteja fingindo ser o usuário. Você deve ativar a configuração do módulo CSRF do Django para que ele funcione.
Proteção contra injeção de SQL
Os cibercriminosos usam injeções de SQL para inserir código SQL em seu banco de dados usando solicitações HTTP, como POST. O código malicioso pode roubar ou excluir seus dados genuínos. O Django resolve esse problema no próprio design. Os dados enviados pelo usuário, chamados de parâmetros, são mantidos separados da consulta do banco de dados até atingirem a camada do modelo. O modelo Django pode então escapar de caracteres perigosos ao criar o código de consulta.
Proteção devido ao apoio da comunidade
A proteção no Django vai além de seus recursos de segurança integrados. Como o Django é open source, muitos desenvolvedores experientes usam e revisam os módulos do Django. Testes completos aumentam a confiabilidade do código Django e evitam que vulnerabilidades de segurança acidentais sejam deixadas para trás.
O que é escalabilidade do Django?
Escalabilidade, no desenvolvimento de sites, refere-se à capacidade do site de lidar com várias solicitações de clientes ao mesmo tempo. Os projetos do Django são muito escaláveis e podem lidar com milhares de solicitações. Você pode escalar sua aplicação Django das maneiras a seguir.
Hardware
A equipe do Django projetou o framework Web para usar eficientemente o hardware em seu sistema. Com uma arquitetura com nada compartilhado, o Django separa componentes como a camada de banco de dados (os modelos) e a camada de aplicação (as visualizações). Você pode adicionar hardware em qualquer nível sem afetar o resto do sistema. Você pode adicionar mais servidores de banco de dados ou servidores de aplicações em seu sistema, e o Django usará esses recursos de forma eficiente para lidar com vários visitantes.
Armazenamento em cache
O armazenamento em cache é o processo de salvar alguns dados de páginas Web no servidor do cliente ou em servidores intermediários para que sua aplicação Django possa processar solicitações mais rapidamente, aumentando a escala. O Django oferece um sistema de cache robusto com diferentes níveis de cache:
- Você pode armazenar em cache todo o seu site.
- Você pode armazenar em cache a saída da função de visualização específica.
- Você pode armazenar em cache conteúdo específico que é demorado para criar.
Os projetos do Django também funcionam bem com caches de terceiros. Você pode escrever um código que dê dicas sobre esses caches e diga a eles qual parte da sua aplicação você deseja armazenar em cache.
Como a AWS pode ajudar a oferecer suporte às suas aplicações Web do Django?
O AWS Elastic Beanstalk é um serviço fácil de usar para implementar e escalar aplicações e serviços da Web que foram desenvolvidos com tecnologias como Django, Python, Java, .NET, PHP, Node.js, Ruby, Go e Docker em servidores conhecidos, como Apache, Nginx, Passenger e IIS.
O Elastic Beanstalk oferece suporte aos desenvolvedores do Django das seguintes maneiras:
- Você carrega seu código do Django e o Elastic Beanstalk lida automaticamente com a implantação.
- O Elastic Beanstalk provisiona e opera a infraestrutura, e gerencia a pilha de aplicativos (plataforma), para que você não precise gastar seu tempo ou desenvolver conhecimentos específicos para isso.
- O Elastic Beanstalk dimensiona automaticamente a aplicação de acordo com suas necessidades específicas, usando configurações ajustáveis de autoescalabilidade.
Comece a implantar uma aplicação Django no Elastic Beanstalk criando uma conta gratuita da AWS hoje mesmo.
Próximas etapas do AWS Django
Obtenha acesso instantâneo ao nível gratuito da AWS.