code

django는 다른 앱의 템플릿을 포함합니다.

codestyles 2020. 12. 30. 08:13
반응형

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

반응형