[django] Django 대 모델 뷰 컨트롤러 [닫힌]
누군가 Django와 Model View Controller 패턴의 차이점을 설명 할 수 있습니까?
기능적으로, 이러한 차이점에서 무엇을 기대할 수 있습니까? 즉, Django를 Ruby on Rails와 비교하여 다르게 작동하는 것은 무엇입니까?
답변
Django Book 에 따르면 Django 는 MVC 프레임 워크라고 할만큼 충분히 MVC 패턴을 따릅니다.
Django는 컨트롤러가 프레임 워크 자체에서 처리되고 대부분의 흥분이 모델, 템플릿 및 뷰에서 발생하기 때문에 MTV 프레임 워크라고 불 렸습니다.
MTV / MVC에 대한 자세한 내용은 여기에서 읽을 수 있습니다.
Ruby on Rails와 같은 다른 MVC 웹 개발 프레임 워크에 익숙하다면 Django 뷰를 컨트롤러로 , Django 템플릿을 뷰로 간주 할 수 있습니다 .
이것은 MVC의 다른 해석으로 인한 불행한 혼란입니다.
Django의 MVC 해석에서 뷰
는 사용자에게 제공되는 데이터를 설명합니다. 데이터가 어떻게 보이는지뿐만 아니라 어떤 데이터가 표시되는지가 중요합니다.대조적으로, Ruby on Rails 및 유사한 프레임 워크는 컨트롤러의 작업에 사용자에게 표시되는 데이터를 결정하는 것이 포함되지만보기는 데이터가 표시되는 것이 아니라 데이터가 어떻게 보이는지 엄격하게 결정됩니다.
답변
Django FAQ 자체는 시작하기에 적절한 곳입니다.
MVC의 해석에서 “뷰”는 사용자에게 제공되는 데이터를 설명합니다. 데이터가 어떻게 보이는지가 아니라 어떤 데이터가 표시되는지가 중요합니다. 보기는 보는 방식이 아니라 보는 데이터를 설명합니다. 미묘한 차이입니다.
…
또한 템플릿이 들어오는 곳인 프레젠테이션에서 콘텐츠를 분리하는 것이 합리적입니다. Django에서 “보기”는 어떤 데이터가 표시되는지 설명하지만 일반적으로보기는 데이터가 표시되는 방식을 설명하는 템플릿에 위임합니다.
그렇다면 “컨트롤러”는 어디에 적합합니까? Django의 경우 아마도 프레임 워크 자체 일 것입니다. Django URL 구성에 따라 적절한 뷰에 요청을 보내는 기계입니다.
두문자어에 굶주린 경우 Django는 “MTV”프레임 워크, 즉 “모델”, “템플릿”및 “보기”라고 말할 수 있습니다. 그 분석은 훨씬 더 의미가 있습니다.
“Model View Controller”는 단순한 패턴, 즉 공통 아키텍처를 설명하려는 시도라는 점을 명심하십시오. 따라서 더 나은 질문은 “Django가 Model View Controller 패턴에 얼마나 잘 맞는가?”일 수 있습니다.
답변
코드를 작성할 때 프레임 워크 조각의 이름에 대해 생각하지 않고 RoR과 같이 상당한 차이가 없습니다. 그러나 models
Django에서는 다른 프레임 워크에서 컨트롤러 수준으로 유지되는 로직을 쉽게 포함하기 때문에 제공하는 용도에 따라 다릅니다 .
view
장고에이 가져 오는 데이터에 대한 쿼리의 집합, 그리고 템플릿에 전달하는 경향이있다.
답변
mvt에서 URL에 대한 요청은 View로 발송됩니다. 이 뷰는 모델을 호출하고 조작을 수행하며 출력을 위해 데이터를 준비합니다. 데이터는 응답으로 내 보낸 렌더링 된 템플릿으로 전달됩니다. 이상적으로는 웹 프레임 워크에서 컨트롤러는보기에서 숨겨집니다.
MVC와의 차이점은 mvc에서 사용자가 gui와 상호 작용하고 컨트롤러가 요청을 처리하고 모델에 알리고 뷰가 모델을 쿼리하여 결과를 사용자에게 표시합니다.