Как я могу исправить ошибку 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',
],
},
},
]