Alguém pode me explicar onde estão as diferenças entre o Django e o padrão Model View Controller?
Funcionalmente, o que podemos esperar dessas diferenças - ou seja, o que funciona de forma diferente comparando Django a, por exemplo, Ruby on Rails?
Alguém pode me explicar onde estão as diferenças entre o Django e o padrão Model View Controller?
Funcionalmente, o que podemos esperar dessas diferenças - ou seja, o que funciona de forma diferente comparando Django a, por exemplo, Ruby on Rails?
Respostas:
De acordo com o Django Book , o Django segue o padrão MVC próximo o suficiente para ser chamado de framework MVC.
Django tem sido referido como um framework MTV porque o controlador é manipulado pelo próprio framework e a maior parte do entusiasmo acontece em modelos, templates e visualizações.
Você pode ler mais sobre MTV / MVC aqui:
O padrão de desenvolvimento MTV (ou MVC)
Se você está familiarizado com outras estruturas de desenvolvimento da Web MVC, como Ruby on Rails, você pode considerar as visualizações do Django como os controladores e os modelos do Django como as visualizações .
Esta é uma confusão infeliz ocasionada por diferentes interpretações do MVC.
Na interpretação do Django de MVC, a visão descreve os dados que são apresentados ao usuário; não é necessariamente apenas a aparência dos dados, mas quais dados são apresentados.
Em contraste, Ruby on Rails e estruturas semelhantes sugerem que o trabalho do controlador inclui decidir quais dados são apresentados ao usuário, enquanto a visualização é estritamente como os dados se parecem, não quais dados são apresentados.
O próprio Django FAQ é um bom lugar para começar:
Em nossa interpretação do MVC, a “visão” descreve os dados que são apresentados ao usuário. Não é necessariamente a aparência dos dados, mas quais dados são apresentados. A visualização descreve quais dados você vê, não como você os vê. É uma distinção sutil.
...
Além disso, é sensato separar o conteúdo da apresentação - que é onde os modelos entram. No Django, uma “visão” descreve quais dados são apresentados, mas uma visão normalmente delega a um modelo, que descreve como os dados são apresentados.
Onde o “controlador” se encaixa, então? No caso do Django, é provavelmente o próprio framework: a máquina que envia uma solicitação para a visualização apropriada, de acordo com a configuração de URL do Django.
Se você está ávido por siglas, pode dizer que Django é uma estrutura “MTV” - ou seja, “modelo”, “modelo” e “visualização”. Essa divisão faz muito mais sentido.
Tenha em mente que “Model View Controller” é apenas um padrão, ou seja, uma tentativa de descrever uma arquitetura comum. Portanto, uma pergunta melhor pode ser “Quão bem o Django se ajusta ao padrão Model View Controller?
Quando você codifica, sem pensar nos nomes das peças do framework, não há diferenças sustentáveis entre, por exemplo, RoR. Mas depende do uso que você dá models
, já que no Django eles facilmente contêm alguma lógica que em outros frameworks ficaria no nível do controlador.
O view
no Django tende a ser um conjunto de consultas para buscar dados e passá-los para o modelo.
views
em Django é algo como um controller
em MVC e um template
em Django é mais provavelmente umviews
No mvt, uma solicitação de URL é enviada para uma visualização. Esta visualização chama o modelo, executa manipulações e prepara os dados para a saída. Os dados são passados para um Template que é renderizado e emitido como uma resposta. idealmente em estruturas da web, o controlador fica oculto.
É aqui que está a diferença do MVC: no mvc, o usuário interage com a gui, o controlador lida com a solicitação e notifica o modelo e a visualização consulta o modelo para exibir o resultado ao usuário.