단일 요청에서 여러 장고 템플릿을 결합합니다
-
03-07-2019 - |
문제
누군가가 다음 문제에 대한 최상의 접근 방식을 파악하는 데 도움이 될지 궁금합니다. Django 템플릿을 사용하여 웹 UI 구성 요소를 구성하는 웹 응용 프로그램을 작성하고 있습니다. 헤더 / 바닥 글, HTML 헤드, Masthead 등과 같은 여러 공통 HTML 요소가 있습니다. 한 번 코딩하고 핵심 애플리케이션 기능을 나타내는 다른 템플릿과 "포함 / 결합"하려고합니다.
Django 템플릿을 사용하여 가능합니까? 그렇다면 어떻게 그것을 달성 할 수 있습니까?
해결책
Django를 사용할 수 있습니다 extends
꼬리표. 헤더와 바닥 글이 있다고 가정 해 봅시다. foo.django : 템플릿을 만들 수 있습니다.
<h1>My HTML Header</h1>
<!-- an so on -->
{% block content %}
{% endblock %}
<!-- html footer -->
그런 다음 다른 템플릿을 만들 수 있습니다 : bar.django :
{% extends "foo.django" %}
{% block content %}
This overrides the content block in foo.django.
{% endblock %}
... 그런 다음 렌더링합니다.
<h1>My HTML Header</h1>
<!-- an so on -->
This overrides the content block in foo.django.
<!-- html footer -->
Django 템플릿에는 좋은 지침이 있습니다 http://www.djangobook.com/en/1.0/chapter04/.
다른 팁
그만큼 {% extends %}
그리고 {% include %}
메소드는 컨텍스트에서 추가 정보가 필요하지 않은 페이지 요소에 적합합니다.
데이터베이스에서 더 많은 내용을 컨텍스트에 삽입해야하자마자 템플릿 태그가 편리합니다. 예를 들어, contrib.comments
앱 Django에 포함 된 a {% get_comment_list %}
주어진 모델 인스턴스에 첨부 된 주석을 검색하기위한 템플릿 태그. 사용 방법은 다음과 같습니다.
<div>
{% load comments %}
{% get_comment_list for my_instance as comment_list %}
{% for comment in comment_list %}
<p><a href="{{ comment.url }}">{{ comment.name }}</a> wrote:</p>
{{ comment.comment }}
{% endfor %}
</div>
이것을 별도의 템플릿으로 저장할 수 있습니다 {% include %}
다른 템플릿에서.
자신의 콘텐츠를 위해 자신의 사용자 정의 템플릿 태그를 작성할 수 있습니다. 따르다 문서. 가능할 때마다 간단한 태그 기구. 편리한 기성품 템플릿 태그를 찾을 수 있습니다 djangosnippets.org 그리고 Blogosphere.
시도해보십시오 {% include %}
꼬리표.
http://docs.djangoproject.com/en/dev/ref/templates/builtins/#include