2014-10-01 1 views
0

제목, 가격, 설명 및 이미지 필드가있는 간단한 모델이 있다고 가정 해보십시오. 3 html 출력/블록을이 모델의 각 개체에 대해 다시 사용할 수 있습니다. 추가 된 '복잡성'을 위해 2 개의 출력이 결합되어 3 번째가됩니다. 그래서, 여기에이 3 개의 출력이 템플릿에서 어떻게 생겼는지가 나와 있습니다.모델 개체를 기반으로 재사용 가능한 HTML 블록을 만드는 방법

output_image

<span class="output_image"><img src="{{ object.image.url }}" alt="{{ object.title}}></span> 

<ul class="output_info"> 
    <li>{{ object.title }}</li> 
    <li>Price: {{ object.price }}</li> 
    <li>{{ object.description }}</li> 
</ul> 

output_all output_info (래핑 이전 2)

<div class="output_all"> 
    <span class="output_image">...</span> 
    <ul class="output_info">...</ul> 
</div> 

내가 검색 페이지에 output_image 사용하려면, 그리고 목록에 output_all 수 고급 검색 등이 있습니다. 따라서이 출력을 한 번만 작성하고 다시 사용하기를 원합니다. 이것을 달성하는 가장 좋은 방법은 무엇입니까?

처음에는 형식화 된 html을 반환 할 모델 클래스에 메서드/속성을 추가 할 것을 고려했습니다. 이것이 효과가 있었고 템플릿에 {{ object.output_all }}을 호출 할 수있었습니다. 이런 식으로 HTML을 출력하는 것은 나쁜 습관입니까?

다른 방법에 대해서도 간략하게 살펴 보았습니다. 포함 태그는 작동하는 것처럼 보이지만 output_all 사례의 '전체'버전으로 테스트했을뿐입니다 (즉, output_all에 다른 2 개의 출력 태그가 아직 중첩되어 있지 않음). 이것은 올바른 방법이며, 태그를 '중첩'할 수 있습니까?

+0

내가 귀하의 질문을 이해한다면, 나는 이것이 당신을 도울 수 있다고 생각합니다 : https://github.com/clintecker/django-chunks – cor

+0

닫기,하지만 정적 인 내용 인 것 같습니다. 내가 선택한 개체를 기반으로 동적으로 만들어진 콘텐츠가 필요합니다. – neRok

답변

0

여기에 포함 태그를 사용합니다. 템플리트에 속한 프리젠 테이션 로직을 유지하십시오.

+0

네, 맞습니다. 그러나 포함 태그가 모델에 '동점'없이 자신의 파일에 만들어지기 때문에 '연결 끊김'이있는 것으로 보입니다. 잠재적으로 잘못된 개체를 태그에 전달할 수 있습니다. IMO에서는 html 템플릿에 링크 된 models 파일에서 모델의 포함 태그를 지정하는 것이 더 논리적 일 것입니다. 따라서'{% special_tag object %}'대신 '{{object.special_tag}}'을 할 수 있습니다. 그러면 {{% special_tag wrong_object %}'를 방지 할 수 있습니다. 그,하지만 takes_context를 사용하여, 나는 단지 시연 중이다). 나는 이것이 가능하지 않다고 믿는가? – neRok

관련 문제