Почему 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:

  1. создайте каталог templates в каталоге app (т.е.: app/templates/app/template_name.html)
  2. Или создайте папку templates в каталоге project (т.е.: templates/template_name.html или templates/app/template_name.html), если вы выберете этот вариант, вам придется указать django на этот каталог, обновив настройки TEMPLATES в
  3. .
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",
            ],
        },
    },
]
  1. Затем в представлениях укажите путь к вашему .html файлу(ам)

Пример:

  1. При варианте 1: путь будет app/template_name.html
  2. .
  3. При варианте 2: путь будет template_name.html или app/template_name.html (зависит от структуры папок)

Для того, чтобы лучше определить, почему ваш шаблон не рендерится, вам следует воспользоваться DEBUG=True в settings.py. Попытка получить доступ к вашей странице через браузер должна отобразить пути, которые пробовал Django, и тогда вы сразу увидите, что ваш путь определен неправильно.

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