2009-08-17 4 views
22

저는 장고를 통해 자신의 길을 찾고 있습니다. 그리고 지금까지 그것을 좋아하지만, 문제가 있으며 그것을 해결하는 일반적인 방법이 무엇인지 모르겠습니다.데이터베이스가 아닌 모델을위한 Django MVC 패턴?

일부 복잡한 Python 개체가 업데이트 될 때 업데이트 될 것으로 예상되는보기가 있다고 가정합니다.이 개체는 AJAX 호출에 의해 구동되거나 사용자 또는 다른 개체에 의해 직접 구동되는 데이터베이스에 의해 구동되지 않습니다.

이 코드는 어디에 있습니까? 그것은 여전히 ​​models.py에 가야 하나?

답변

36

models.py은 (경우에 따라) 비어있을 수 있습니다. 당신은 데이터베이스에 매핑되는 모델을 가질 의무가 없습니다.

Django의 관리자를 기쁘게하기 위해서는 여전히 models.py 개의 파일이 있어야합니다. models.py 파일 이름은 중요하며 다양한 관리 명령으로 예상되는 파일을 변경하고 시도하는 것보다 빈 파일을 갖는 것이 더 쉽습니다.

"모델"은 일반적으로 데이터베이스에 매핑 할 필요가 없습니다. MVC 디자인의 일반적인 구성 요소 인 "모델"은 무엇이든 될 수 있습니다.

보기에서 사용하는 "모델"모듈을 직접 정의 할 수 있습니다. models.py은 Django 관리자를 혼란스럽게 할 것이므로 그냥 부르지 마십시오. 응용 프로그램에 의미있는 무엇인가를 부르십시오 : foo.py. 이 foo.py은 애플리케이션을 뒷받침하는 실제 사항을 처리합니다. 반드시 Django Model.model 하위 클래스 일 필요는 없습니다.

Django MVC에는 데이터베이스 매핑이 필요하지 않습니다. models.py이라는 모듈에 데이터베이스 매핑이 명시 적으로 포함될 것으로 예상됩니다. 실제 데이터베이스 매핑이 없으면 빈 models.py을 사용하십시오.

귀하의 views.py

import foo 

def index(request): 
    objects = foo.somelistofobjects() 
    *etc.* 

장고는 쉽게 어떤 데이터베이스 매핑 작업을 수행 할 수 있습니다 사용할 수 있습니다. 모델은 쉽게 될 수 있습니다. 그냥 models.py으로 전화하지 마세요.


편집.

뷰가 모델에 등록되어 있습니까? No.

컨트롤러에서 모델을 업데이트하면보기가 통보됩니까? 번호 :

모델은 실제로 MVP이므로 데이터 재 표시입니까? 예.

Django 문서를 읽으십시오. 간단 해.

웹 요청 -> URL 매핑 ->보기 기능 -> 템플릿 -> 응답.

모델은보기 기능으로 사용할 수 있습니다. 모델은 데이터베이스 매핑이 될 수도 있고 다른 어떤 것일 수도 있습니다.

+0

답이 맞거나 틀릴 수도 있고, 장고를 사용하지 않았으며 파이썬을 사용해 본지 2 년이되었습니다. 그러나 이것은 MVC의 개념에 대해 웹 프레임 워크가 한 일을 절대 싫어합니다.MVC 패러다임의 모델 데이터가 데이터베이스에서 제공된다는 철저한 요구 사항은 없습니다. –

+0

모델은 데이터베이스에서 온 것이 아닙니다. 우리는 장고 응용 프로그램에서이 작업을 수행합니다. 일부 앱에는 데이터베이스에없는 모델이 있습니다. –

+3

충분히 공정하지만 분명히 장고에서는 표준이 아닌 방식으로 작업해야합니다. 그리고 물론 다른 프레임 워크에서도이를 보았습니다. 나는 그들이 "모델 클래스"라는 개념을 도입함으로써 감수성이 떨어지고 경험이 적은 웹 개발자들에게 서비스를 중단했다고 생각합니다. 대부분 이들은 실제로 엔티티 * 클래스입니다. 나는 모델 클래스와 같은 것이 있어야한다고 동의하지 않는다. 모델은 더 높은 수준의 추상화에있다. 아마도 모델 외관 일 수도 있지만 모델 클래스는 없습니다. 어쨌든, 그것은 내 애완 동물과 나는 MVC 순수한 사람 같아요. –

관련 문제