Como funciona a arquitetura MTV (Django)

Diandra Andrade e Silva
4 min readJan 4, 2020

--

Um padrão de projeto bem conhecido é o MVC (Model, View, Controller) que é um design pattern(padrões de projetos) baseado em separação em três camadas os quais estão conectadas entre si e desempenham papéis para que sua aplicação funcione. Essa lógica é utilizada em linguagens bem famosas no mercado como Java, C#, Ruby e PHP.

A arquitetura MTV é uma derivação desde padrão de projeto. O que se altera é a nomenclatura de arquivos e quais as camadas interconectadas. Este modelo é utilizado dentro do framework Django, e a ideia deste artigo é mostrar como funciona dentro de um aplicação web montada dentro do framework de Python.

A definição de Model é a mesma para a arquitetura MVC e MTV, que é o arquivo que contém a estrutura lógica do projeto e funciona como um intermediário para manipular dados entre o banco de dados e a View. Dentro do arquivo Model é determinado quais tipos de dados, e como será armazenado dentro do seu banco e, como será exibido quando for requisitado pela View.

O arquivo View é muito confundido com o Controller da arquitetura MVC, porém não tem relação. O papel desta camada é formatar os dados que são vindos do banco através da Model para visualização.

E por últim o Template, que cuida da parte desta visualização para o usuário final. Ele é como o front-end de sua aplicação. Nesta arquitetura, esta camada fica armazenado os arquivos html, css, javascript extendidos e por conta disso auxilia numa velocidade maior de desenvolvimento e conforme o retorno da aplicação, ele renderiza seus arquivos HTML de sua aplicação no navegador. Como referência, esta camada seria como a camada View em uma estrutura MVC, e no caso do Django framework, tem um plus que é possível trabalhar com extensão de arquivos, ou seja, para o dev front-end isso auxilia muito em seu trabalho.

Para entender um pouco melhor, a ideia é mostrar como funciona a arquitetura do Django e como a arquitetura MTV influencia nessa estrutura.

O Django é baseado em requisições e respostas. Sempre que há uma atualização ou mudança dentro do Template, esta solicitação é enviada para o servidor através da View que pode, por exemplo, ser um clique para uma URL de acesso. Esta parte de mapeamento de URLs também é um componente existente dentro do Django, que o faz através de expressões regulares, um ponto bem bacana para uma aplicação web pois ajuda na parte de SEO.

Voltando a parte da solicitação da URL, após essa requisição, a lógica da aplicação começa a funcionar pois fará a verificação se é uma URL válida, e bate dentro da Model para conseguir acessar o banco de dados. Se a requisição for válida e estiver tudo certo, é retornado um status http como 200, ou o formato desejado através da View, e que por fim é renderizado pelo Template e que responde com o arquivo HTML solicitado. Um exemplo do dia a dia é um caso de um site, que é criado em Django, e seu usuário quer acessar a página de login. Vem essa solicitação do Template, e a View retorna com a url correspondente como algumacoisa/login e é renderizado no navegador.

Após isso, aparece o formulário (página HTML) para preencher com suas credenciais (login e senha), e estes dados são novamente enviados para validação através da View, são recebidos pela Model e batem no banco de dados e é verificado se é o mesmo que está salvo na base. Se sim, é retornado com os dados pela Model, como por exemplo, imagem de perfil, dados pessoais, dados de compra e etc e enviados para a View que formatará o mesmo para ser renderizado dentro do Template. Caso sejam dados inválidos, a Model retorna que não encontrou, e este resultado negativo é processado pela View e pode ser renderizado uma página de erro no navegador, ou a própria página de login com uma mensagem de erro.

De forma básica, este é o funcionamento da arquitetura do Django que é baseado em uma arquitetura MTV. É um framework em Python então para quem está começando o ideal é ter um conhecimento prévio de Python e sua lógica, e estudar a documentação que é bem completa.

--

--