Как исправить несуществующий шаблон в Django?

Я новичок в фреймворке Django. Я создал свой проект, создал свое приложение и протестировал его, все работало нормально, пока я не решил добавить шаблон. Я не знаю, откуда берется ошибка, потому что я следую тому, что говорится в документации Django: создаю шаблоны имен папок в папке приложения, создаю папку с именем приложения и, наконец, создаю HTML-файл в папке.

NOTE: другие маршруты работают нормально, кроме шаблона

Пожалуйста, просмотрите скриншот структуры моего файла и ошибки ниже. Структура файла

ОШИБКА

    TemplateDoesNotExist at /blog/
 Blog/index
Request Method: GET
Request URL:    http://127.0.0.1:8000/blog/
Django Version: 4.0.1
Exception Type: TemplateDoesNotExist
Exception Value:    
 Blog/index
Exception Location: C:\Python39\lib\site-packages\django\template\loader.py, line 19, in get_template
Python Executable:  C:\Python39\python.exe
Python Version: 3.9.4
Python Path:    
['C:\\Users\\Maxwell\\Desktop\\Django\\WebApp',
 'C:\\Python39\\python39.zip',
 'C:\\Python39\\DLLs',
 'C:\\Python39\\lib',
 'C:\\Python39',
 'C:\\Users\\Maxwell\\AppData\\Roaming\\Python\\Python39\\site-packages',
 'C:\\Python39\\lib\\site-packages',
 'C:\\Python39\\lib\\site-packages\\win32',
 'C:\\Python39\\lib\\site-packages\\win32\\lib',
 'C:\\Python39\\lib\\site-packages\\Pythonwin']
Server time:    Sun, 23 Jan 2022 12:04:18 +0000
Template-loader postmortem
Django tried loading these templates, in this order:

Using engine django:

django.template.loaders.app_directories.Loader: C:\Users\Maxwell\Desktop\Django\WebApp\Blog\templates\ Blog\index (Source does not exist)
django.template.loaders.app_directories.Loader: C:\Python39\lib\site-packages\django\contrib\admin\templates\ Blog\index (Source does not exist)
django.template.loaders.app_directories.Loader: C:\Python39\lib\site-packages\django\contrib\auth\templates\ Blog\index (Source does not exist)

App/views.py

from django.http import HttpResponse
from django.shortcuts import render

# Create your views here.

def index(request,name):
    return HttpResponse(f'Hello {name}')

def html(request):
    return render(request,' Blog/index.html')

Похоже, что вы выводите шаблон с помощью Blog/index, но вам нужно указать все имя файла, поэтому Blog/index.html и без ведущего (или последующего) пробела:

def html(request):
    return render(request, 'Blog/index.html')

Проблема устранена, проблема заключалась в ведущем пробеле! Кредит @Willem Van Onsem

если ответ @Willem van Onsem не сработал

создайте папку templates в главной директории "на том же уровне, что и WebApp затем внутри нее создайте папки для каждого приложения

в файле settings.py вы найдете опцию TEMPLATES

TEMPLATES = [
    {
        ...
        'DIRS': [os.path.join(BASE_DIR,'templates')],#add this line
        ...
]

и когда вы хотите использовать шаблон

return render(request,"template_folder/template_name.html")

Я тоже столкнулся с этой ситуацией и прошел через большинство ответов здесь, говорящих о пути и редактировании функции 'templates' в settings.py. В конце концов, это произошло потому, что я забыл добавить свое приложение в раздел установленных приложений в файле settings.py. Я увидел это в документации по адресу https://docs.djangoproject.com/en/4.0/intro/tutorial03/#write-views-that-actually-do-something

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