Workshop | Desenvolvimento de Back-end Django | Parte 1

Agostinho Pina Ramos
7 min readFeb 20, 2022

Neste workshop, falaremos sobre um Framework para aplicações escrita em Python. É uma ferramenta cada vez mais popular entre os desenvolvedores e também bastante requisitada entre os recrutadores.

Usada em grandes empresas como o Instagram, Google, YouTube, Pinterest e outros. O Framework atrai atenção dos desenvolvedores de Python porque permite a criação de aplicações web com processos muito otimizados!

Aplicações que utilizam o framework Django

Criado em 2003, a ideia para o nome do Framework, segundo os seus desenvolvedores, surgiu da homenagem à Jean Reinhardt, um famoso guitarrista conhecido popularmente como Django, seu nome Romani.

Django é um Framework de aplicação web gratuita e de código aberto escrito em Python. Segundo o site oficial, a Framework é descrita como uma estrutura da web Python de alto nível que incentiva o desenvolvimento rápido e o design limpo e pragmático.
Construído por desenvolvedores experientes, o Framework cuida de grande parte do aborrecimento da web, para se poder concentrar em escrever a aplicação sem precisar reinventar a roda.

Python é uma linguagem de programação de alto nível, interpretada de script, imperativa, orientada a objetos, funcional, de tipagem dinâmica e forte. Foi lançada por Guido van Rossum em 1991.

Como funciona o Django?

O Django separa o processo em duas fases Request Phase e Response Phase. Podemos verificar na imagem que se segue, o ciclo completo entre as duas fases.

Request-Response Cycle

O Django utiliza uma arquitetura nomeada Model View Template, que é bem semelhante da já conhecida MVC. A Model View Controller podemos encontrar em algumas linguagens de programação como Java, C#, Delphi, Ruby, PHP, JS.

Consiste em um object-relational mapping (ORM) que faz a mediação entre os modelos de dados (definidos como classes de Python) e uma base de dados relacional “Model”, um sistema de processamento solicitação HTTP com sistema de modelos da web “View” e um despachante de URL baseado em expressão regular “Controller”.

Models

Um “Model” é a fonte única e definitiva de informação sobre os seus dados. Ele contém os campos e comportamentos essenciais dos dados armazenados. E a camada relacionada a base de dados.

O exemplo que se segue, definimos um modelo chamado User, que tem first_name e um last_name:

from django.db import modelsclass User(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)

O first_name e last_name são campos do model. Cada campo é especificado como um atributo de classe e cada atributo é mapeado para uma coluna de base de dados.

O modelo User acima criaria uma tabela de base de dados como a que se segue:

CREATE TABLE myapp_user (
"id" serial NOT NULL PRIMARY KEY,
"first_name" varchar(30) NOT NULL,
"last_name" varchar(30) NOT NULL
);

View

Esta é uma função Python que percebe uma solicitação da web e retorna uma resposta da Web. Essa resposta pode ser o conteúdo HTML de uma página da Web, ou um redirecionamento, ou erro 404, ou um documento XML, ou uma imagem… ou qualquer coisa.

Esta é uma visualização que retorna a data e hora atuais, como um documento HTML:

from django.http import HttpResponse
import datetime
def current_datetime(request):
now = datetime.datetime.now()
html = "<html><body>Date now %s.</body></html>" % now
return HttpResponse(html)

As views usam os modelos para acessar os dados necessários às solicitações. Depois, levam essas informações para os templates.

Template

Um template contém as partes estáticas da saída HTML desejada, bem como alguma sintaxe especial que descreve como o conteúdo dinâmico será inserido.

É aqui que a renderização dos dados acontece, vindo das views. É como o Django mostra as solicitações para os utilizadores.

Olhando de novo o esquema de Request-Response Cycle acima, conseguimos ver a sequência mais facilmente.

Para que serve o Django?

Após percebemos como funciona, partiremos para sua aplicação na prática. O que o Django é capaz de fazer?

Como um otimizador de desenvolvimento de projetos web, o Django é capaz de construir melhores aplicações web, de forma mais rápida e com menos código.

Qual a sua arquitetura?

A arquitetura do Django é relativamente simples. Basicamente, um projeto Django possui como padrão de projeto o MTV (Model, Template, View), que servem para: Model: Mapeamento do banco de dados para o projeto; Template: Páginas para visualização de dados.

Arquitetura do framework Django

O Django usa uma estrutura de diretórios para organizar as diferentes partes da aplicação web. Agora, aprenderemos sobre a estrutura da aplicação Django e a estrutura do projeto.

.
├── apps
│ └── app_1
│ ├── admin.py
│ ├── apps.py
│ ├── __init__.py
│ ├── migrations
│ │ └── __init__.py
│ ├── models.py
│ ├── tests.py
│ └── views.py
├── django_project
│ ├── __init__.py
│ ├── __pycache__
│ │ ├── __init__.cpython-35.pyc
│ │ └── settings.cpython-35.pyc
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── manage.py
├── media
├── static
└── templates

Construção rápida de aplicações

O framework Django foi construído para ajudar os desenvolvedores a sair do conceito da aplicação para a produção o mais rápido possível.

Em poucos passos, é possível instalar este framework Python e fazer o deploy da aplicação. Mostrarei mais para frente como se faz.

Na documentação oficial há um tutorial rápido explicando o passo a passo para a criação da aplicação Django!

Ferramentas extras

O Django inclui dezenas de extras que podemos usar para lidar com tarefas comuns de desenvolvimento Web. Django cuida da autenticação do utilizador, administração de conteúdo, mapas do site, feeds RSS e muitas outras tarefas.

O Django permite trabalhar com qualquer framework do lado do cliente, entregando em vários formatos, como aqueles que já conhecemos (HTML, JSON, XML…)

Garantia de aplicação segura

O Django leva a segurança a sério e ajuda os desenvolvedores a evitar muitos erros comuns de segurança, como injeção de SQL, script entre sites, falsificação de solicitações entre sites e clickjacking.

O seu sistema de autenticação de utilizador fornece uma maneira segura de gerir contas dos utilizadores.

Vou deixar mais detalhes sobre todos esses erros de segurança na documentação oficial do framework Django!

Framework opinativo

Além disso, o Django é um framework moderadamente opinativo, ou seja, a flexibilidade da framework dá à quem desenvolve a resolução dos problemas. Se é opinativo, já possuem uma maneira correta de resolver os problemas existentes. Se é não opinativo, não possui essas “regras” e deixa o desenvolvedor livre para solucionar os problemas da forma como entender.

Por estar no meio dessas duas extremidades, ele apresenta o melhor dos dois mundos. O utilizador pode desfrutar de soluções prontas e também usar a arquitetura desacoplada para ter liberdade de escolha na hora de resolver problemas com o framework Django.

O que é framework?

Só para esclarecer, um framework nada mais é do que um conjunto de módulos que facilitam o desenvolvimento e, no caso do Django, esses módulos são utilizados em conjunto, permitindo assim a criação de aplicações ou páginas web a partir de um código existente, ao invés de começar tudo do zero.

Que base de dados podemos utilizar com Django?

  • PostgreSQL
  • MariaDB
  • Oracle
  • SQLite

Existem também outras bases de dados que podemos usar com o Django, segundo a documentação oficial:

  • CockroachDB
  • Firebird
  • Microsoft SQL Server

Ao instalar o Django na sua máquina, também instala o SQLite, não sendo necessário a instalação e configuração do mesmo.

Onde posso fazer o deploy do projeto Django?

Vou citar apenas algumas das plataformas que é possível fazer o deploy do projeto Django, sendo:

  • Heroku
  • PythonAnywhere
  • AWS
  • DigitalOcean

Os desenvolvedores geralmente ficam confusos entre Node.js e Django enquanto procuram tecnologias e frameworks para criar aplicação web e móveis que tenham excelente interface e recursos amigáveis ​​para os utilizadores. Ambos os frameworks são de código aberto e gratuitos.

Node.js vs Django

Node.js vs Django

Conclusão

Embora em termos de complexidade, o Node.js seja menos complicado que o Django, existem vários recursos que precisamos considerar ao escolher entre os dois frameworks. Portanto, caso seja um profissional experiente em JavaScript ou tem tempo suficiente para aprender e implementá-lo, o Node.js é o caminho a seguir. Mas, se tem prazos a cumprir, tem experiência em Python e está preocupado em entender as funcionalidades, então deve optar pelo Django para criar a sua aplicação.

No próximo workshop faremos exercícios práticos sobre Django. Workshop | Desenvolvimento de Back-end Django | Parte 2

--

--