작성
·
172
0
settings.py 에서
template 경로를 BASE_DIR 안에 있는 templates 폴더로 정했는데,
이후 마지막에 account app의 views에서
accountapp/hello_world.html 로 경로를 정하면
BASE_DIR에 있는 templates 폴더에서 accountapp/hello_world.html를 찾아야 하는 거 아닌가요?
당연히 거기 안에는 hello_world.html는 커녕 accountapp 폴더도 없으니 오류가 떠야 하는 거 아닌가요...?
왜 accountapp 폴더 만든 templates 폴더는 경로를 알려주지 않고 바로 사용이 가능한가요...?
이게 app 안의 templates는 안에 만들어놓기만 하면 settings.py에 설정 안 하고 바로 사용이 가능하다고 하면,
그 안에 {% extends 'base.html' %} 는 어떻게
다른 경로, 즉 BASE_DIR의 templates 폴더 안에 있는 base.html을 찾을 수 있는건가요...?
답변 1
1
안녕하세요.
질문 확인했습니다.
해당 내용은 settings.py 내에 적은 Template 관련 설정을 보며 답변드리겠습니다.
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
일단 말씀하신대로 DIRS 라는 속성으로
BASE_DIR 에 있는 templates 폴더를 할당했습니다.
여기까지만 적혀있다면 모든 HTML 템플릿은 해당 폴더에서 찾아야 하는 것이 맞지만,
아래의 'APP_DIRS': True 코드로 상황이 바뀝니다.
장고는 해당 옵션이 True 로 설정되어있을 경우,
저희가 지정한 BASE_DIR 의 템플릿 폴더 말고도 각 앱폴더 내부에 있는
'templates' 라는 이름을 가진 폴더를 모두 찾습니다.
그리고 해당하는 모든 폴더를 template 이 들어있는 폴더로 인식하죠.
그렇기 때문에 말씀하신대로 저희가
각 앱폴더 내부에 있는 templates 폴더 경로를 명시하지 않아도
templates 폴더에 html 파일들을 별도로 관리할 수 있게 되는것입니다.
답변이 도움이 되셨길 바랍니다!
감사합니다-