2011-04-09 5 views
0

내 템플릿에 몇 개의 문자열을 복제하는 방법이 궁금합니다. 특히, 내 페이지 상단에 콘텐츠의 목차를 만들려고합니다 (예 : http://www.google.com/transparencyreport/faq/과 같은 콘텐츠에 대한 앵커 링크 포함). 링크가 섹션 헤더와 동일한 텍스트를 갖도록하고 싶습니다.Django 템플릿에서 문자열이 중복되지 않도록하려면 어떻게해야합니까?

나는 {% with %} 사용에 대해 생각해 봤지만, {% with %} 블록 안에 모든 것을 중첩시켜야하는 것은 힘들어 보입니다.

Whats the best way to duplicate data in a django template?과 유사하지만 어디에서나이 템플릿을 상속하지 않으므로 {% block %}을 (를) 사용하는 것은 실제로 옵션이 아닙니다.

답변

2

보기에서 전달한 템플릿 변수 (예 : {{ link_name }})를 사용하는 것과 같습니다.

복제 정보가있는 다른 템플릿을 포함하는 template inclusion tag을 사용할 수도 있습니다.

+0

+1 포함 –

+0

를 들어하지만 이건 그냥 짧은 문자열 : 한 줄 섹션 헤더. 각각 하나의 파일을 생성하는 것이 복사보다 나쁘다는 생각이 들었습니다. 그래서이 정적 문자열을보기에 넣습니다. – raylu

+1

흠. 너의 의도를 알 겠어. 이 스 니펫과 유사한 템플릿 태그를 사용할 수도 있습니다 : http://www.soyoucode.com/2011/set-variable-django-template, 그러나 저는 템플릿 시스템을 그런 식으로 파괴하는 것은 좋은 생각인지 모르겠습니다. 어쩌면 가장 좋은 방법은 표시 할 문자열을 상수로 설정 파일에 추가 한 다음보기를 통해 템플릿 컨텍스트에 전달하는 것입니다. –

0

귀하의 콘텐츠를 손상시킬 수 있으므로 머리글을 템플릿 변수로 개별적으로 액세스 할 수 있습니다.

{% for d in page_content %} 
    <a href="#{{ d.id }}">{{ d.header }}</a> 
{% endfor %} 

내용 동안 :이 같은 뭔가 내용에 대한 테이블을 생성 할 수있는, 템플릿에,

page_content = [ 
    { 
     'id':'header1', 
     'header': 'Text for Header 1' 
     'content' : 'Content Beneath header 1' 
    }, 
] 

다음 : 당신은 dicts의 목록으로, 각 헤더와 관련된 정보를 저장할 수 있습니다 페이지는 다음과 같이 보일 것의 :

{% for d in page_content %} 
    <h1 id="#{{ d.id }}">{{ d.header }}</h1><p>{{ d.content }}</p> 
{% endfor %} 
+0

불행히도 콘텐츠 섹션은 매우 다양합니다. 또한, 그들은 단지 그 견해에 속하지 않습니다 ... – raylu

+0

나는 (아마도 거짓으로) 내용이 orm을 사용하여 질의 될 것이라고 생각했습니다. 따라서 하드 코딩하는 대신에 "content = model_instance.content"와 같이 보일 것입니다. 그렇지 않은 경우 포함 태그 제안을 고려한 것처럼 보입니다. –

관련 문제