반응형
django는 다른 앱의 템플릿을 포함합니다.
내 프로젝트를 설정하고 앱을 독립적으로 유지하기 위해 작업하는 동안 문제가 발생했습니다. 다른 앱의 모든 템플릿이 일관된 머리글과 바닥 글을 갖기를 바랍니다. 내가 시도하는 것은 다음과 같습니다.
myproject/
base/
templates/
header.html
footer.html
app1/
templates/
my_app1_page.html -> want to include 'header.html'
and 'footer.html' from base app
이 작업을 수행하려는 앱이 더 많이 있다고 가정합니다. 이것이 가능하거나 올바른 방법입니까?
앱이 INSTALLED_APPS에 있고 앱 디렉토리에 대한 템플릿 로더가 활성화되어 있으면 다른 앱의 템플릿을 포함 할 수 있습니다. 예 :
{% include "header.html" %}
... 템플릿은 앱의 템플릿 디렉토리에 직접 위치하기 때문입니다. 일반적으로 이름 충돌을 방지하려면 다음을 사용하는 것이 좋습니다.
app1/
templates/
app1/
page1.html
page2.html
app2/
templates/
app2/
page1.html
page2.html
그리고 {% include "app1/page1.html" %}
또는 {% include "app2/page1.html" %}
...
그러나 : 일관된 모양과 느낌을 유지하려면 포함보다 템플릿 상속을 사용하는 것이 훨씬 좋습니다. 템플릿 상속은 Django 템플릿 시스템 의 정말 좋은 것 중 하나입니다. (대부분의 경우) 합리적 일 때마다 포함보다 상속을 선택합니다.
내 추천 :
- 프로젝트에 대한 기본 템플릿 ( "base.html"이 기본 규칙 임)과 머리글과 바닥 글 및
{%block content%}
기본 콘텐츠에 대한를 갖습니다 . - 다른 템플릿이 base.html 양식을 상속
{% extends "base.html" %}
하고 콘텐츠 섹션을 재정의하도록합니다.
문서 링크는이 질문에 대한 다른 응답을 참조하십시오.
include 태그 를 사용하고 절대 경로를 지정 하여 확실히 할 수 있지만 Django에서 작업하는 적절한 방법은 Template inheritance 를 사용하는 것 입니다.
참조 URL : https://stackoverflow.com/questions/4571686/django-include-template-from-another-app
반응형
'code' 카테고리의 다른 글
Razor의 ContentPlaceHolder? (0) | 2020.12.30 |
---|---|
Django : 필드를 NULL로 설정하는 방법은 무엇입니까? (0) | 2020.12.30 |
일부 값보다 큰 목록의 항목 목록 반환 (0) | 2020.12.30 |
변경된 코드를 다시로드하는 Rails 콘솔 명령 (Rails 3+)이 있습니까? (0) | 2020.12.30 |
wkhtmltopdf를 사용하여 HTML에서 Google 웹 글꼴 및 PDF 생성 (0) | 2020.12.30 |