2011-04-27 1 views
0

django generic flatblocks app이 우려 원칙을 위반 한 것인지 궁금합니다.
앱을 모르는 사람들은 슬러그 또는 ID 및 모델 유형에 따라 데이터를 가져옵니다. 예를 들어
은 : 한편서식 파일 태그를 사용하여 데이터 분리 문제를 해결합니까?

{% gblock "about" for "cms.FlatPageWithsummary" into "about" %} 

, 그것의 내용은보기의 디자이너의 관점에서 의미가 있지만, 다른 한편으로는 데이터를 가져올 수있는 템플릿의 책임 안 때문에 나타납니다 위치를 표시합니다.
어떻게해야합니까? 요청 컨텍스트를 통해 전달해야합니까? 이제 최신 게시물을 가져 와서 표시해야하는 또 다른 상황에 직면하고 있습니다.
여기 줄은 어디에 있습니까?
디자이너는 제공된 템플릿 태그 만 사용하여이 기능을 표시하고 구현할 수 있지만 다른 한편으로는 템플릿에서 데이터를 가져 오는 중입니다. 다소 틀린 것처럼 보입니다.

답변

0

django.contrib.comments too fetches data from the DB in a templatetag. 앱을 재사용 할 수있게하려는 경우 이는 일반적인 패턴입니다.

+0

새로운 클래스 기반 뷰를 사용하면 posts를 extra_context 변수에 추가하는 mixin을 쉽게 제공 할 수 있습니다. 너는 내 질문에 대답하지 않았다. 이것이 SoC 위반입니까? –

+0

나는 그렇게 생각하지 않는다. 일을 단순하게 유지하는 방법입니다. – vad

+0

일을 단순하게 유지하더라도, SoC를 위반하는지 여부에 대해 여전히 유효하거나 반대되는 인수는 아닙니다. –

2

만약 그렇다면 무엇입니까? 이러한 "원칙"은 개발자와 사용자로서의 삶을 더 쉽게 만들어줍니다. 가장 쉽고 깨끗한 방법으로 그 원칙을 깨면 코드의 품질이 떨어지지 않는 한 자유롭게 그렇게해야합니다. 모든 비용으로 우려의 분리를 관찰 할 도덕적 인 이유가있는 것처럼 아닙니다.

그리고 잊지 말아야 할 다른 원칙도 있습니다. 논쟁의 여지가 있기 때문에 이것이 문제의 분리를 깨뜨리는 것은 받아 들일 만하다. 그것은 여전히 ​​가장 정확하게 DRY를 따른다. 그러한 원칙들이 상충되는 경우, 따라야 할 원칙을 선택해야합니다.

+0

템플릿 태그를 사용하지 않으면 DRY 문제를 해결하는 다른 방법이 있습니다. 문제는 데이터를 가져 오는 것이 누가 책임이라는 것입니까? 보기 또는 템플릿의? –

관련 문제