DEV Community

Cover image for Entendendo a arquitetura do Django
Renato Lelis
Renato Lelis

Posted on

Entendendo a arquitetura do Django

No início do desenvolvimento de um sistema, é importante que o desenho da arquitetura esteja bem definida e que todos os desenvolvedores sigam ela a risca (bom item para o peer review). No desenho da arquitetura, é levado em consideração performance, escalabilidade e manutenção.

A muitas arquitetura usadas por padrão hoje em dia e alguns frameworks são construídos para seguir elas. No caso do Django o modelo adotado é a arquitetura MTV.

Alt Text

Dividida em três camadas, a arquitetura MTV consiste na camada Model, Template e da camada View.

A camada Model é responsável pela interface com o banco de dados. É onde o Django fornece sua ORM para a modelagem de dados.

Obs: O Django já fornece uma tabela padrão de usuários, o código acima é só um exemplo da ORM.

O Model vai servir como base da aplicação, onde vai ser extraído e persistido informação da aplicação, fazendo conexão (mas não necessariamente) com a camada View.

A próxima camada é a de Template. Nela é onde os dados vão ser apresentados no browser. Esta camada consiste basicamente de arquivos .html com algumas funcionalidades que o Django fornece para apresentar os dados vindos da camada View. Essas funcionalidades são expressões, envolvidas em chaves.

Existem três tipos de expressões. A primeira delas é o {% %}, que permite executar comandos do python, como o for eachs e o ifs, e outras funcionalidades do próprio sistema de templates do Django.

A outra expressão é o {{ }}, ele é usado para acessar variáveis e mostrá-las na tela. Simples assim.

E a última expressão é uma variação da anterior, que é simplesmente um filtro representado pelo pipe. No exemplo mostrado é aplicado um filtro de data na variável usuario.data_de_nascimento. Há diversos filtros disponíveis, você pode conferir mais delas aqui.

E por fim vem a camada de View. Nela é onde as informações dos templates são tratadas. Existem dois tipos de views, as baseadas em função e as baseadas em classes.

As view baseadas em função(FBV) são funções normais do python, recebem um parâmetro obrigatório, o request, tem sua lógica dentro de si e retornam as informações necessárias para renderizar no template.

Nesta função é criado um dicionário context, nela irá conter as informações para ser passadas para o template. Dentro do context é feita uma consulta para retornar todos os usuários e por fim, na função render, é passado o próprio request, o template que vai ser direcionado as informações do context e o context em si.

E as views baseadas em classes(CBV) são classes que o Django genericas que abstraem a lógica das FBVs.

Com CBVs você sobre precisa dizer o model e o template que o Django faz a mágica.

Particularmente, eu prefiro as FBVs porque dão mais liberdade para fazer as regras de negócio mas, se não for uma lógica muito complexa, uma CBVs não vai fazer mal.

Nesse post, vimos a importância de uma arquitetura bem estruturada, o model de arquitetura que o Django adota e detalhamos as responsabilidades de suas camadas.

Top comments (0)