Django

[Django] 템플릿 경로 지정 BASE_DIR

winter17 2023. 3. 22. 19:59

>> settings.py

 BASE_DIR은 프로젝트 디렉토리의 최상위 경로를 나타내는 변수

BASE_DIR위치는 최상위 폴더인 PRACTICE

settings에서 경로지정을 편하게 하기 위해 최상단 지점을 지정 해놓은 변수

⎣templates 폴더는 app폴더안에 만들기로 약속을 했는데 →왜? 유지보수에 용이하니까!

  새로운 템플릿 경로 생성

  부모 템플릿 base.html의 extends 경로는 {% extends 'base.html' %}

 

 

예시) 최상단 디렉토리의 templates 폴더 경로가 project/templates인 경우(원래는 project/app/templates)

settings.py 파일에서 다음과 같이 설정해야 함

BASE_DIR = Path(__file__).resolve().parent.parent

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR / 'templates'],
        'APP_DIRS': False,
        # ...
    },
]
  • TEMPLATES의 DIRS옵션에 BASE_DIR / 'templates' 를 추가하여 최상단 디렉토리 내의 templates폴더를 참조하도록 설정함
  • APP_DIRS 옵션은 False로 설정하여 각 앱의 템플릿 디렉토리를 참조하지 않도록 함
  • 이렇게 설정하면 각 앱의 templates 폴더에 저장된 템플릿이 아닌 최상단 디렉토리의 templates 폴더에 저장된 템플릿을 사용할 수 있음

 

 

<templates> 폴더 경로 

  • app안에 templates 폴더 생성하고 그 안에 앱 이름의 폴더를 한번더 생성함
  • 왜? 경로를 다르게 하기 위해서 articles, pages 둘다 index.html이 있다면 오류가 발생하니까 물리적인 공간을 나눠버린것
app/templates/articles/index.html

app/templates/pages/index.html

 

 

https://docs.python.org/ko/3.9/library/pathlib.html#module-pathlib

 

pathlib — 객체 지향 파일 시스템 경로 — Python 3.9.16 문서

pathlib — 객체 지향 파일 시스템 경로 소스 코드: Lib/pathlib.py 이 모듈은 다른 운영 체제에 적합한 의미 체계를 가진 파일 시스템 경로를 나타내는 클래스를 제공합니다. 경로 클래스는 I/O 없이 순

docs.python.org