Проблема рендеринга шаблонов Django

Я новичок в Django, пытаюсь создать веб-приложение на основе самоучителя. Я создал приложение с именем "travello" и именем проекта "travellproject", в представлениях я пытаюсь отобразить html-страницу.

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

# Create your views here.
def homepage(request):
    return render(request,'homepage.html')

я создал каталог "templates" в travellproj (пожалуйста, ознакомьтесь со структурой каталога ниже), также определил DIRS переменной шаблона как указано ниже и urls.py как указано ниже.

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

urlpatterns = [
    path("",views.homepage),
    path("admin/", admin.site.urls),
]

Но я получаю ошибку TemplateDoesNotExist, пожалуйста, помогите.

Ошибка

TemplateDoesNotExist в / / homepage.html Метод запроса: GET URL запроса: http://127.0.0.1:8000/ Версия Django: 4.1.5 Тип исключения: TemplateDoesNotExist Значение исключения:
homepage.html Exception Location: C:\Users\Django\first_proj\lib\site-packages\django\template\loader.py, строка 19, in get_template Поднято во время: travello.views.homepage

Структура каталога:

travello
|-views.py
travellProj
|-templates -- > homepage.html
|-urls.py
|-setting.py

Папка templates должна находиться в корне вашего сайта. Давайте посмотрим, как это должно выглядеть:

Project_folder
|-travelproj <-- Your site configuration folder
|-|-urls.py
|-|-wsgi.py
|-|-asgi.py
|-|-.......
|-travello <-- this is an application
|-|-views.py
|-|-urls.py
|-|-templates <-- templates for this app only
|-|-|-travello
|-|-|-|-template1.html
|-|-|-|-.......
|-|-.......
|-templates <- This is the templates folder for your site
|-|-homepage.html
|-|-..........
|-manage.py
|-requirements.txt

Итак, в вашем случае папка templates находится в папке конфигурации сайта, что не является хорошей практикой. Вы должны переместить ее на ступень выше.

Советы по хорошей практике: В корне вашего сайта (на том же уровне, что и manage.py) у вас есть папка templates, которая будет содержать шаблоны, общие для всех ваших приложений. В каждом приложении у вас есть папка templates/app_name, которая содержит все шаблоны, специфичные для этого приложения.

У вас такая же архитектура для статики.

Внутри шаблонов создайте еще один новый каталог с именем вашего приложения travello, затем сохраните html-файл внутри каталога travello

travello
| templates/travello/homepage.html
|-views.py
travellProj
|-urls.py
|-setting.py

Тогда views должно быть похоже на

def homepage(request):
    return render(request,'travello/homepage.html')
Вернуться на верх