Как я могу исправить ошибку django? "шаблон не существует"

Несколько дней назад я начал работу над Django и сейчас застрял. Я получил ошибку вроде этой. django.template.exceptions.TemplateDoesNotExist: home.html но я не знаю, как ее исправить.

views.py

from django.shortcuts import render
from django.http import HttpResponse
from .models import ToDoList, Item

def index(response, id):
ls = ToDoList.objects.get(id=id)
return render(response, "main/base.html", {"name":ls.name})

def home(response):
return render(response, "main/home.html", {'name':'test'})

base.html

<html> <head> <title>Website</title> </head> <body> <p>{{name}}</p> </body> </html>

home.html

{% extends 'main/base.html' %}

Оба html-файла находятся в файле с именем templates. Я подумал, что шаблон может быть как-то связан с этим и проверил его.

setting.py

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

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

Вы должны иметь оба файла в папке: <project_name>/<app_name>/main/, но вы, вероятно, поместили их в другое место.

Дополнительно, хорошей практикой является добавление этого значения к TEMPLATES["DIRS"]:

"DIRS": [os.path.join(PROJECT_DIR, "templates")],

а затем создайте папку "templates" внутри каждого приложения и храните в ней шаблоны (переместите туда всю папку "main" с подходящими шаблонами)

сделайте следующее:

TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
         os.path.join(BASE_DIR,"templates",
         os.path.join(BASE_DIR,"appname","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',
],
},
},
]
Вернуться на верх