2011-10-28 5 views
2

내보기 코드에 응용 프로그램 논리를 작성해야합니까? 예를 들어 양식 요소를 제출할 때 사용자를 생성하고 활성화 이메일을 보내야합니다. 이 기능은 뷰 기능에서 수행 할 것인가 아니면 도로를 쉽게 테스트 할 수 있도록 별도의 기능을 만들어야합니까? 장고는 여기서 무엇을 추천합니까?보기 코드의 응용 프로그램 논리

답변

6

나는 장고를 사용하기 시작했을 때 모든 것이 어디로가는 지 알아내는 것이 매우 어려웠다. 그것은 정말로 당신이 쓰고있는 논리의 유형에 달려 있습니다.

첫 번째 모델 시작 : 모델 방법 및 관리자는 행 수준 논리 및 테이블 수준 논리를 수행하기에 좋습니다. 즉, 모델 관리자는 코드를 작성하여 관련 카테고리 목록을 얻을 수있는 좋은 장소입니다. 모든 blogposts. 모델 방법은 특정 블로그 게시물의 문자를 셀 수있는 좋은 방법입니다.

뷰 수준 논리는 모든 요청을 받아 필요한 (모델 관리자를 사용하여) 결과를 얻는 데 필요한 단계를 수행 한 다음 템플릿을 준비하는 과정을 모두 처리해야합니다.

어디에도 들어 가지 않지만 논리 구조가있는 코드가 있으면이를 수행하기위한 모듈을 작성할 수 있습니다. 마찬가지로 속하지 않는 코드 조각이 있으면 utils.py로 유지하십시오.

템플릿에 실제로 어떤 논리도 사용하지 말아야합니다. 대신 템플릿 태그를 사용해야합니다. 이는 모든 요청주기 또는 단일 요청주기에서 원하지 않는 재사용 가능한 코드 조각을 사용하는 데 유용합니다 (즉, 웹 사이트의 블로그 섹션에서 범주 목록을 표시하는 등).

요청주기마다 일부 논리를 수행하려면 컨텍스트 프로세서 또는 미들웨어를 사용하십시오. 하나의 단일 요청주기에서만 일부 논리를 수행하려면보기가 아마도 장소 일 것입니다.

TLDR :보기에 논리를 쓰는 것은 괜찮지 만,

2

등록 코드를 자체 기능으로 분리하면 테스트를 쉽게 할 수 있습니다. 관리자가 별도의 개인보기에서 사용자를 등록하도록 허용 한 경우 등록 기능이 더 DRY가됩니다. 개인적으로, 코드의 작은 애플리케이션 로직이 많은 피해를 입힐 것이라고 생각하지 않습니다.

django-registration 앱에서 등록보기를 보는 것이 도움이 될 것입니다. 작성 방법을 보려면 방금 보았거나 사용해야한다고 말하는 것이 아닙니다. 그것은 자신의 기능에 사용자 등록을 캡슐화했습니다 (등록 백엔드가 플러그 가능하기 때문에 간접적 인 수준이 있습니다).

+1

하나 더 적합 할 수있는 많은 장소가있다. 나는 응답을 쓰고 있었고 그것이 실제로 당신이 말하는 것과 정확히 일치한다는 것을 깨달았다. 이 게시물은 가장 의미가 있습니다. 간단히 말하면 DRY입니다. 이것이 주어진 행동이 일어나는 유일한 장소라면,보기에 그것을 유지하십시오! 그렇지 않은 경우 다른 위치에 배치하고보기로 가져옵니다. 단순한. –

관련 문제