django templateview
프로젝트 파일의 urls.py
에서 view를 include로 지정하지 않고,
templateview를 사용하여 바로 지정할 수 있다.
해당 페이지로 이동할때만 사용 가능하며,
앱폴더 안에 있는 내용들을 사용할 때는 include
를 사용한다.
from django.urls import path
from django.views.generic import TemplateView
urlpatterns = [
path("about/", TemplateView.as_view(template_name="about.html")),
]
적용
project/settings.py
에 들어가서 DIRS를 'DIRS': [BASE_DIR / 'templates']
로 바꿔준다.
여기서 BASE_DIR은 BASE_DIR = Path(__file__).resolve().parent.parent
즉, 프로젝트 파일을 말한다.
BASE_DIR / 'templates'
는 프로젝트의 루트 디렉토리에 있는 templates
디렉토리를 가리키고,project/
settings.py
에서 DIRS
설정을 수정하여 템플릿 파일이 위치한 디렉토리를 지정할 있다.
이렇게 함으로써 django는 템플릿 파일을 찾을 때 해당 디렉토리를 검색하게 된다.
project/url에서 templateview를 사용하여 main.html을 찾아 사용한다.
사용 코드
project/urls
from django.contrib import admin
from django.urls import path
from django.views.generic import TemplateView
urlpatterns = [
path('admin/', admin.site.urls),
path('', TemplateView.as_view(template_name = 'main.html')),
]
project/settings.py
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [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',
],
},
},
]