최근 사이트 전체의 CSS 레이아웃을 사용하는 Django 프로젝트를 작업 중이므로 각 템플릿 (이 경우에는 /projects/index.html의 템플릿)이 base.html
이라는 헤더, 꼬리말, 자바 스크립트 등을 포함하는 기본 파일을 확장합니다. 당신은 내가 확장 할 기본 파일이 index.html 파일보다 높은 디렉토리에 볼 수 있듯이,django 템플릿의 절대 경로 사용
.
├── static
│ └── base.html
├── templates
│ └── projects
│ └── index.html
그리고 :
문제는 내 디렉토리 구조가 그렇게 보이는 것입니다. 일반적으로 상대 경로를 사용하고 인덱스 파일의 맨 위에 다음 코드를 사용합니다 : {% extends "../base.html" %}
또는 파일의 절대 경로를 사용하십시오 (필요한 경우)
그러나 이들 중 하나를 사용하여 메서드를 사용하면 확장에 대한 따옴표 안에있는 내용이 현재 경로에 추가되고 상위 디렉토리에 대한 호출은 완전히 무시됩니다. 현재 경로 인 경우입니다
는, 예를 들어, /project/templates/projects
와 나는 물론, 존재하지 않는, /project/templates/projects/project/static/base.html
를 찾기 위해 시스템을 일으키는 원인이되는 현재 경로에 추가됩니다 {% extends "/project/static/base.html" %}
사용합니다. 조사한 후에 상대 경로의 차단은 보안 목적으로 고의적이라고 말한 기사를 보았지만 현재 작업 디렉토리 외부의 파일에는 액세스 할 수 없습니다.
나는 이것이 웹 사이트를 구축 할 때 매우 일반적인 설정이라고 생각했기 때문에, 아직 알지 못하는 여러 템플릿과 상호 작용할 수있는 방법이 있어야합니다. 누구든지 그것에 관한 정보가 있다면, 그것은 많이 감사 할 것입니다.
확장 기능이 템플릿 디렉토리에 상대적이라는 사실은 전혀 몰랐습니다. 하루 종일 내 인생을 힘들게했습니다. 고맙습니다. – H31IX