TemplateDoesNotExist по адресу / путь шаблона
Я хочу создать бэкенд портфолио и пытаюсь использовать шаблон, но он говорит, что его не существует, но показывает правильный путь к файлу в сообщении об ошибке. Это urls.py:
from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('core.urls')),
]
if settings.DEBUG:
urlpatterns += static(settings.STATIC_URL,
document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL,
document_root=settings.MEDIA_ROOT)
Это мой views.py:
from django.shortcuts import render
from django.http import HttpResponse
from django.template import loader
def home(request):
template = loader.get_template('home.html')
return HttpResponse(template.render(request))
А это мои настройки шаблонов:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
....
],
},
},
]
Структура директории следующая:
Core - это название приложения
Попробуйте
измените вид дома на
def home(request):
return render("home.html")
и установить DIRS на пустое место в settings.py
TEMPLATES = [
{
...
'DIRS': [],
...
}
]
я бы предложил вам попробовать это в вашем settings.py
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
TEMPLATES_DIR = BASE_DIR / 'templates'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [TEMPLATES_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',
],
},
},
]
и после этого запросите html в вашем views.py
def home(request):
return render(request, 'home.html')
и в вашем urls.py
path('',views.home, name='home')
это лучший и гораздо более чистый способ указать django, где искать шаблоны, и скажите мне, если вы все еще получаете ошибку
Я исправил это, переместив каталоги statics и template в каталог app.