개발

django.template.exceptions.TemplateDoesNotExist 오류

에드몽단테스 2024. 2. 16. 11:38

django로 프로젝트를 시작해 보자.

 

우선 설치한다.

pip install django

 

프로젝트를 만든다.

django-admin startproject cctv_dashboard

 

앱을 만든다.

python manage.py startapp member

 

이제 앱에 간단한 페이지를 만들어 보자.

 

settings.py 에 앱을 추가한다.

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'member'
]

여기에서는 'member'를 추가했다.

 

member 앱 안에 있는 views.py에 코드를 추가한다.

from django.shortcuts import render

def index(request):
    return render(request, 'member/index.html')

 

위 index.html 파일을 만들어 보자

 

우선 member 앱 안에 templates 디렉토리를 만든다.(템플릿을 위한 디렉토리로 철자를 조심한다.)

그 안에 member 디렉토리를 만들고 간단하게 index.html 을 만든다.

 

member 앱안에 urls.py를 새로 만들어 맵핑을 위한 코드를 넣는다.

# urls.py

from django.urls import path

from . import views

urlpatterns = [
    path('', views.index, name='index')
]

 

마지막으로 프로젝트 안의 urls.py에 위 url을 추가한다.

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('member.urls'))
]

 

이제 서버를 띄어보자.

python manage.py runserver

 

서버가 잘 뜬다.

 

이제 만든 페이지를 호출해보자.

오잉? 잘 뜨네? 분명 django.template.exceptions.TemplateDoesNotExist가 났었는데 잘 되네?

 

전에 장고로 프로젝트를 만들었을 때 위와 같이 하면 잘 됐다. 그런데 이번에 다시 해보니 위 오류가 나왔다.

 

해결한 방법은 settings.py에 'TEPLATE_DIR'을 정의하고 이를 'TEMPLATES'안에 추가했더니 잘 동작하는 것을 확인했다.

# settings.py

BASE_DIR = Path(__file__).resolve().parent.parent
TEMPLATE_DIR = os.path.join(BASE_DIR, 'templates')

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [TEMPLATE_DIR],
        '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',
            ],
        },
    },
]

 

settings.py가 이전에 했던 프로젝트의 settings.py 구조가 조금 달라져 있길래 버전업하면서 템플릿 위치를 이제는 지정해야하는가? 생각하고 글을 작성중인데, 다시 위 TEMPLATE_DIR 부분을 삭제하고 재기동해도 그냥 잘 되었다.

 

뭘까?

 

아무것도 조작할 필요없이 원래대로 그냥 잘 되네...

그냥... 그렇다구...

반응형