Почему Django говорит, что мой шаблон не существует, хотя он существует?
Я начинающий, следую этому учебнику по Django (https://www.w3schools.com/django/django_templates.php) и получаю ошибку, описанную ниже, после создания шаблона html и изменения файла views.py (имя стерто для конфиденциальности):
Internal Server Error: /members
Traceback (most recent call last):
File "C:\Users\\myproject\lib\site-packages\django\core\handlers\exception.py", line 55, in inner
response = get_response(request)
File "C:\Users\\myproject\lib\site-packages\django\core\handlers\base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\\myproject\myworld\members\views.py", line 5, in index
template = loader.get_template('myfirst.html')
File "C:\Users\\myproject\lib\site-packages\django\template\loader.py", line 19, in get_template
raise TemplateDoesNotExist(template_name, chain=chain)
django.template.exceptions.TemplateDoesNotExist: myfirst.html
[26/Oct/2022 16:51:01] "GET /members HTTP/1.1" 500 64964
Tried this:
from django.http import HttpResponse
from django.shortcuts import loader
def index(request):
template = loader.get_template('myfirst.html')
return HttpResponse(template.render())
Expecting this:
<!DOCTYPE html>
<html>
<body><h1>Hello World!</h1>
<p>Welcome to my first Django project!</p>
</body>
</html>
сначала нужно создать папку templates, затем создать в ней HTML файл "myfirst.html", затем создать в нем свои HTML теги, например:
<h1>Hello, World</h1>
Создайте каталог, в котором будет жить ваш .html
:
- создайте каталог
templates
в каталогеapp
(т.е.:app/templates/app/template_name.html
) - Или создайте папку
templates
в каталогеproject
(т.е.:templates/template_name.html
илиtemplates/app/template_name.html
), если вы выберете этот вариант, вам придется указатьdjango
на этот каталог, обновив настройкиTEMPLATES
в .
TEMPLATES = [
{
"BACKEND": "django.template.backends.django.DjangoTemplates",
# Add path to templates
"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",
],
},
},
]
- Затем в представлениях укажите путь к вашему
.html
файлу(ам)
Пример:
- При варианте 1: путь будет
app/template_name.html
.
- При варианте 2: путь будет
template_name.html
илиapp/template_name.html
(зависит от структуры папок)
Для того, чтобы лучше определить, почему ваш шаблон не рендерится, вам следует воспользоваться DEBUG=True
в settings.py
.
Попытка получить доступ к вашей странице через браузер должна отобразить пути, которые пробовал Django, и тогда вы сразу увидите, что ваш путь определен неправильно.