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