O objetivo deste Tutorial é ganhar familiaridade com o que é Django, quais funcionalidades ele fornece e os principais blocos de construção de um aplicativo Django.


O que é Django?

Django é uma estrutura da web Python de alto nível que permite o desenvolvimento rápido de sites seguros e de fácil manutenção. Construído por desenvolvedores experientes, o Django cuida de grande parte do trabalho de desenvolvimento da web, para que você possa se concentrar em escrever seu aplicativo sem precisar reinventar a roda. É gratuito e de código aberto, tem uma comunidade próspera e ativa, ótima documentação e muitas opções de suporte gratuito e pago.


Django ajuda você a desenvolver software que é:


Completo

Django segue a filosofia "Baterias incluídas" e oferece quase tudo que os desenvolvedores desejam fazer "fora da caixa". Como tudo que você precisa faz parte de um "produto", tudo funciona perfeitamente em conjunto, segue princípios de design consistentes e tem documentação extensa e atualizada.


Versátil

Django pode ser (e tem sido) usado para construir quase qualquer tipo de site - desde sistemas de gerenciamento de conteúdo e wikis até redes sociais e sites de notícias. Ele pode funcionar com qualquer estrutura do lado do cliente e pode entregar conteúdo em quase qualquer formato (incluindo HTML, RSS feeds, JSON, XML, etc). O site que você está lendo atualmente é construído com Django!


Internamente, embora forneça opções para quase qualquer funcionalidade que você possa desejar (por exemplo, vários bancos de dados populares, mecanismos de modelagem, etc.), ele também pode ser estendido para usar outros componentes, se necessário.


Seguro

Django ajuda os desenvolvedores a evitar muitos erros comuns de segurança, fornecendo uma estrutura que foi projetada para "fazer as coisas certas" para proteger o site automaticamente. Por exemplo, Django fornece uma maneira segura de gerenciar contas de usuário e senhas, evitando erros comuns como colocar informações de sessão em cookies onde é vulnerável (em vez disso, os cookies contêm apenas uma chave, e os dados reais são armazenados no banco de dados) ou armazenamento direto de senhas em vez de um hash de senha.


Um hash de senha é um valor de comprimento fixo criado ao enviar a senha por meio de uma função hash criptográfica. O Django pode verificar se uma senha inserida está correta executando-a por meio da função hash e comparando a saída com o valor hash armazenado. No entanto, devido à natureza "unilateral" da função, mesmo que um valor de hash armazenado seja comprometido, é difícil para um invasor descobrir a senha original.


O Django habilita proteção contra muitas vulnerabilidades por padrão, incluindo injeção de SQL, cross-site scripting, falsificação de solicitações entre sites e clickjacking (consulte Segurança do site para obter mais detalhes sobre esses ataques).


Escalável

O Django usa uma arquitetura baseada em componente “nada compartilhado” (cada parte da arquitetura é independente das outras e pode, portanto, ser substituída ou alterada se necessário). Ter uma separação clara entre as diferentes partes significa que ele pode escalar para aumentar o tráfego adicionando hardware em qualquer nível: servidores de cache, servidores de banco de dados ou servidores de aplicativos. Alguns dos sites mais ocupados escalaram o Django com sucesso para atender às suas demandas (por exemplo, Instagram e Disqus, para citar apenas dois).

Sustentável

O código do Django é escrito usando princípios e padrões de design que encorajam a criação de código sustentável e reutilizável. Em particular, ele usa o princípio Don't Repeat Yourself (DRY) para que não haja duplicação desnecessária, reduzindo a quantidade de código. O Django também promove o agrupamento de funcionalidades relacionadas em "aplicativos" reutilizáveis ​​e, em um nível inferior, agrupa o código relacionado em módulos (ao longo das linhas do padrão Model View Controller (MVC)).


Portátil

Django é escrito em Python, que roda em muitas plataformas. Isso significa que você não está vinculado a nenhuma plataforma de servidor em particular e pode executar seus aplicativos em muitos tipos de Linux, Windows e Mac OS X. Além disso, o Django é bem suportado por muitos provedores de hospedagem na web, que muitas vezes fornecem infraestrutura específica e documentação para hospedar sites Django.


Quão popular é Django?

Com base no número de sites de alto perfil que usam Django, no número de pessoas que contribuem para o código-base e no número de pessoas que fornecem suporte gratuito e pago, então sim, Django é um framework popular!


Os sites de alto perfil que usam Django incluem: Disqus, Instagram, Knight Foundation, MacArthur Foundation, Mozilla, National Geographic, Open Knowledge Foundation, Pinterest e Open Stack (fonte: página de visão geral do Django).


Django tem opinião?

Estruturas opinativas são aquelas com opiniões sobre a "maneira certa" de lidar com qualquer tarefa específica. Freqüentemente, eles oferecem suporte ao desenvolvimento rápido em um domínio específico (resolvendo problemas de um tipo específico) porque a maneira certa de fazer qualquer coisa geralmente é bem compreendida e documentada. No entanto, eles podem ser menos flexíveis na resolução de problemas fora de seu domínio principal e tendem a oferecer menos opções para quais componentes e abordagens podem usar.


Estruturas não preconizadas, por outro lado, têm muito menos restrições sobre a melhor maneira de colar componentes para atingir uma meta, ou mesmo quais componentes devem ser usados. Eles tornam mais fácil para os desenvolvedores usarem as ferramentas mais adequadas para concluir uma tarefa específica, embora ao custo que você precise encontrar esses componentes sozinho.


Django é "um tanto opinativo" e, portanto, oferece o "melhor dos dois mundos". Ele fornece um conjunto de componentes para lidar com a maioria das tarefas de desenvolvimento web e uma (ou duas) formas preferidas de usá-los. No entanto, a arquitetura desacoplada do Django significa que você geralmente pode escolher entre várias opções diferentes ou adicionar suporte para opções completamente novas, se desejar.


O que é um Web Framework?

Cada aplicativo da Web é uma obra-prima feita à mão por um desenvolvedor. Ao desenvolver aplicativos da Web, muitas vezes precisamos realizar um conjunto semelhante de operações mais comuns, como roteamento, autenticação de usuário, manipulação de arquivos e muito mais.


É aqui que os frameworks da Web são úteis. Um framework da Web é um conjunto de módulos comuns para que os desenvolvedores possam se concentrar mais em escrever o aplicativo do que em reinventar a roda, o que torna o desenvolvimento da Web mais rápido.


Os frameworks são construídos para suportar a construção de aplicativos web baseados em uma única linguagem de programação, existem muitos frameworks web escritos puramente em Python, apesar da competição o Django emergiu como os frameworks mais poderosos e amados de todos os tempos.


Frameworks da Web como o Django aceleram o processo de desenvolvimento com todos os recursos necessários incorporados. Os frameworks automatizam as tarefas mais comuns, como administração de banco de dados, gerenciamento de usuários e roteamento, o que aumenta a produtividade dos desenvolvedores.