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': [
            ....
        ],
    },
  },


]

Структура директории следующая:

1. my project
- my project
-init.py
-settings.py
-urls.py
-manage.py
-my app
2. templates
3. static

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.

Вернуться на верх