• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

9강 질문

21.08.05 23:09 작성 조회수 86

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

답변을 작성해보세요.

0

안녕하세요.
질문 확인했습니다.

해당 내용은 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 파일들을 별도로 관리할 수 있게 되는것입니다.


답변이 도움이 되셨길 바랍니다!
감사합니다-